Python socket 示例,为什么这个程序在UDP的recvfrom处卡住?
我正在尝试制作一个简单的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
6
你正在尝试通过UDP访问一个HTTP服务器(用的是SOCK_DGRAM
)。其实应该用TCP(SOCK_STREAM
)来做这个。因为TCP是一种面向连接的协议,所以建议你使用socket.create_connection
来建立连接。