java - Python 套接字客户端到 Java 套接字服务器

标签 java python sockets client

我有一个 Java 套接字服务器,它期望来自某个端口的恰好 n 个字节。我想编写一个 Python 客户端,它只在某个端口上将字节发送到 Java 服务器。

由于 Python 没有基元,因此我不确定是否准确发送 n 字节。有什么建议吗?

更多详细信息:

我有一个 Java DatagramSocket,它接收 n 个字节:

DatagramPacket dp = new DatagramPacket(new byte[n], n);

最佳答案

如果您使用数据报套接字(例如 IP 上的 UDP 协议(protocol)),则 Socket API 保证,如果您的 n 小于最大负载大小,则您的数据将在一个数据包中发送。因此,只需调用 socket.send 就足够了。

通过stream套接字发送数据的最简单方法是使用socket.sendall方法,因为流的send并不确保所有数据均已实际发送(并且您应该重复调用 send 以传输您拥有的所有数据)。这是一个例子:

>>> s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
>>> s.connect(('localhost', 12345))
>>> data = 'your data of length n'
>>> s.sendall(data)
正如@Alex 已经提到的,Python 中没有与某种“原语”相关的内容。这只是 Socket API 的问题。

关于java - Python 套接字客户端到 Java 套接字服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1659584/

相关文章:

java - ANDROID:Facebook 和浏览器在我的应用程序中打开,而不是在他们自己的应用程序中

python - IO错误: [Errno 2] No such file or directory: '123.avi'

javascript - 在客户端 JavaScript 中创建 TCP/IP 套接字

没有 super 用户访问权限的 C++ 类 ping 函数

当 hasNextInt() 遇到输入结束时,Java 突然终止

java - DDD valueObject 和数据库模式

java - Swing 对话框渐变绘制问题

python - 城市/省/州列表与坐标?

python - Django 自定义保存组织

c++ - 我可以通过 AF_INET 域套接字连接到 ipv6 地址吗?