我刚刚开始学习有关网络的入门书籍,并且碰巧使用TCP创建了一个简单的客户端服务器程序。服务器的代码是:
import socket as soc
serverport = 12000
server_socket=soc.socket(soc.AF_INET,soc.SOCK_STREAM)
server_socket.bind(('', serverport))
server_socket.listen(2)
max_bytes = 2048
connection_socket, addr = server_socket.accept()
x = connection_socket.recv(max_bytes)
print("Your sender has sent you: ", x.decode())
connection_socket.send('I received your msg'.encode())
connection_socket.close()
,客户端代码为:
import socket as soc
servername = 'xx.xx.xx.xxx' <- In this I put someone's public IP address
serverport = 12000
client_socket=soc.socket(soc.AF_INET,soc.SOCK_STREAM)
client_socket.connect((servername, serverport))
sentence='This is mathmaniage'
client_socket.send(sentence.encode())
#waits
modified_sentence=client_socket.recv(2048)
print(modified_sentence)
client_socket.close()
如果IP可以识别主机,并且上面的代码应该可以建立TCP连接并且可以在我的本地主机上运行,为什么它不能在两个不同网络上的两个不同计算机上运行? (就像我朋友的PC和我的PC一样,所以我写了朋友的IP地址而不是“ xx.xx.xx.xxx”)
答案 0 :(得分:1)
它比您想象的要复杂一些,您的朋友需要具有静态IP地址和端口转发。
在这里https://en.wikipedia.org/wiki/Port_forwarding
了解更多并且您必须检查ISP是否阻止了您的请求。
一个简单的解决方案是VPN,您可以使用一些免费软件与您的朋友快速而简单地设置VPN。