【发布时间】:2009-09-19 08:55:44
【问题描述】:
我有一个简单的套接字客户端和服务器程序,它不能通过互联网工作
# Echo server program
import socket
import ImageGrab
HOST = '' # Symbolic name meaning all available interfaces
PORT = 3000 # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
data = conn.recv(1024)
print data
conn.close()
# Echo client program
import socket
import ImageGrab
#destnation ip
HOST = '127.0.0.1' # The remote host
PORT = 3000 # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.send('Hello rushikesh')
s.close()
print 'Received'#, repr(data)
当我们尝试让它通过互联网工作时,它无法连接。程序如上所示,唯一的事情是目标 ip 被我的朋友 ip 替换。
在 localhost 上工作时,它工作得非常好,但不能在互联网上工作......
我使用SOCK_DGRAM 编写了程序,它仅适用于互联网上的小数据块。我想使用它来传输图像,所以我使用SOCK_STREAM 编写了它来传输图像,该图像在本地主机上成功运行,但无法通过互联网运行。所以我确实写了最简单的程序,但仍然出现同样的问题
有人可以指导我完成这个...
【问题讨论】:
-
据说host as 'localhost' or '127.0.0.1' 只会监听lan,而'0.0.0.0' 会监听所有的adapter。