我正在尝试编写示例here的Python版本,但由于某种原因,我在客户端和服务器中每次调用socket.recvfrom(),address
返回值是None
。我唯一能想到的是,它可能与套接字是STREAM套接字这一事实有关,但是当我尝试将类型更改为socket.SOCK_DGRAM
时,我在调用{{1}时遇到错误}}。我该如何解决这个问题?
socket.listen()
答案 0 :(得分:3)
使用数据报套接字或流套接字。你正试图分裂差异。你想用哪个?如果需要基于连接的字节流协议,请使用流套接字。如果你想要一个无连接的数据报协议,请使用数据报套接字。
如果要使用流套接字,请不要使用recvfrom
。它是基于连接的,唯一可以接收的是来自该特定连接的字节。
如果要使用数据报套接字,请不要使用listen
或accept
。由于它是无连接的,你既不能听也不能接受连接。