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

dai*_*isy 1 python sockets http

我正在尝试在这里创建一个简单的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) 
Run Code Online (Sandbox Code Playgroud)

陷入困境,但nc localhost 80'GET /'有效

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

Fre*_*Foo 6

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