我有一个 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/