我有一个简单的套接字客户端和服务器程序,它无法在互联网上工作
# 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
来编写它,用于传输在localhost上成功运行并且无法在Internet上工作的图像。所以我写了最简单的程序,但仍然显示相同的问题
有人可以通过这个来指导我......
答案 0 :(得分:4)
您有正确的方法,但您可能遇到网络或防火墙问题。根据您朋友的网络配置方式,他可能会在NAT或防火墙后面阻止您直接连接到他的计算机。
要消除问题的一半,您可以使用telnet
作为客户端与服务器建立简单连接,以查看它是否可用:
telnet 127.0.0.1 3000
如果telnet
成功连接,则网络正常工作。如果失败了,那么还有其他错误(可能会给你提供可能有助于发现内容的信息)。