【发布时间】:2014-06-11 23:19:01
【问题描述】:
我有一个套接字,我通过它连接到一个网页并得到一些东西。
import socket
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('example.ir', 80))
mysock.send('GET http://example.ir/index.php HTTP/1.0\n\n')
while True:
print"##########################"
data = mysock.recv(512)
if ( len(data) < 1 ) :
break
print data
mysock.close()
现在,我想知道,mysock 的端口和 IP 是什么?
mysocket 使用什么 IP 和端口连接到 example.ir?
【问题讨论】:
-
你的例子坏了。它错误地使用了
socket.send。它还错误地使用了 HTTP 协议。考虑使用更高级别的网络库,该库具有更少的细微陷阱,并且可以为您实现正确的 HTTP 字节格式等无聊的低级功能。 -
@Jean-PaulCalderone
\n而不是\r\n?socket.send有什么不正确的地方? -
关于换行符,是的 - HTTP 行由
\r\n终止。关于socket.send,不能保证它会发送传递给它的整个字符串。它最多发送整个字符串并返回它发送的字节数。您必须检查返回值并通过再次尝试未发送的任何字节来处理短发送。或使用socket.sendall。我跳过了代码中更微妙的问题,比如缺少EINTR错误处理代码......
标签: python sockets networking ip port