2013-10-31 60 views
1

那么,我在使用python进行套接字编程时遇到了问题。Python套接字客户端和服务器

我以前用socket做的事情是,首先创建一个客户端套接字并向服务器发送一个HTTP GET请求并接收来自该服务器的响应。它工作正常。

现在我的新想法是,我想用两个套接字,一个发送,一个接收。

发送套接字像往常一样,毫不奇怪。接收套接字是绑定到发送套接字使用的ip地址的服务器。

问题是我无法从远程服务器收到任何响应。我使用wireshark并查看远程服务器仍将数据发送回发送套接字使用的端口。但是,我无法将接收套接字绑定到该端口,因为它正在被使用。

有无论如何实现我的情况与两个套接字?我必须通过使用raw_socket来绕过某些系统网络协议吗?

+0

也许[zeromq(http://zeromq.org/)是东西给你。这会为你抽象所有那些讨厌的套接字。 – RickyA

+0

你可以扩展你为什么这样做吗?你有两个套接字有什么优势?最后,你是否试图让它与现有的服务器协同工作,或者你是否将服务器修改为同样的双套接字协议? –

回答

0

不,您不能将接收套接字绑定到与独立发送套接字相同的地址。

relevant Linux man page

仅一个IP套接字可被绑定到任何给定的本地(地址,端口)对。

+0

我相信你是对的。不过,我也确信这是可行的。不符合我描述的方式。我认为我至少需要绕过HTTP和TCP,因为TCP负责解析多路复用,并且HTTP位于此之上。对于知识产权,我不确定。总之,这可以做到,只是我不知道如何。我会弄清楚并在这里发布一些提示。这可能需要几天时间才能完成。 –

相关问题