Python套接字的例子,为什么这个程序在UDP中使用recvfrom?

时间:2011-11-19 13:14:17

标签: python http sockets

我正在尝试在此处创建一个简单的HTTP客户端,因此我尝试使用socket.sendto()socket.recvfrom() 发送和接收消息:

所以在我的系统上启用了apache服务器,绑定到端口80:

  sock = socket (AF_INET , SOCK_DGRAM)
  sock.sendto ( 'GET /' , ( 127.0.0.1 , '80' ) )
  message , servaddr = sock.recvfrom (255) 

卡住,但nc localhost 80与'GET /'合作

默认情况下,python的套接字不是非阻塞的,为什么我会卡在这里?

2 个答案:

答案 0 :(得分:6)

您正尝试通过UDP(SOCK_DGRAM)访问HTTP服务器。请改用TCP(SOCK_STREAM)。由于TCP是面向连接的协议,因此请考虑使用socket.create_connection

答案 1 :(得分:0)

您可能还想查看Tornado:http://www.tornadoweb.org/

一旦你习惯了,这是非常好的。 源代码中有示例代码。

祝你好运。