【发布时间】:2013-12-15 01:45:06
【问题描述】:
我在 Google 上搜索了一段时间,并在此处阅读了有关通过套接字发送和接收的相关问题,但找不到我的问题的答案:
我可以通过不同的套接字发送和接收数据包吗?
我想实现这样的东西:
HOST='127.0.0.1'
PORT=10000
recvSock = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW)
sendSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sendSock.sendto("",(HOST,PORT))
response,addr = recvSock.recvfrom(65535)
基本上,我想通过作为 UDP 套接字的 sendSock 向回显服务器发送消息,并通过作为原始套接字的 recvSock 从服务器接收应答。
有可能吗?如果是,那么如何?关于代码不起作用。
【问题讨论】:
-
可以,但您需要对 UDP 协议进行解码/编码
-
@Torxed:“确定”?
recvSock不可能收到作为对他的sendSock.sendto的响应而发送的数据。他必须做一些完全不同的事情。 -
同时,关于你的最后一个问题,我说如果你想让任何人帮助解决这样的问题,你必须提供你的平台和版本。今天仍然如此。对此类非特定于平台的任何问题的任何答案都将是有限的。任何人都可以说“有些平台可以做 X,但他们以不同的方式做,而其他平台不能做 X,但可以做 Y,这可能是也可能不是你需要的,还有一些平台不能做类似的事情,而且这些年来大部分都变了”,这对你写你想写的代码没有帮助。
标签: python sockets udp client-server raw-sockets