Python socket 示例,为什么这个程序在UDP的recvfrom处卡住?

1 投票
2 回答
1931 浏览
提问于 2025-04-17 06:38

我正在尝试制作一个简单的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的socket默认不是非阻塞的吗?我为什么会卡在这里?

2 个回答

0

你可能还想看看Tornado这个东西:http://www.tornadoweb.org/

一旦你习惯了,它其实挺不错的。源代码里有示例代码。

祝你好运!

6

你正在尝试通过UDP访问一个HTTP服务器(用的是SOCK_DGRAM)。其实应该用TCP(SOCK_STREAM)来做这个。因为TCP是一种面向连接的协议,所以建议你使用socket.create_connection来建立连接。

撰写回答