通过IP地址进行通讯

时间:2019-04-16 15:49:23

标签: python networking

我刚刚开始学习有关网络的入门书籍,并且碰巧使用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”)

1 个答案:

答案 0 :(得分:1)

它比您想象的要复杂一些,您的朋友需要具有静态IP地址和端口转发。

在这里https://en.wikipedia.org/wiki/Port_forwarding

了解更多

并且您必须检查ISP是否阻止了您的请求。

一个简单的解决方案是VPN,您可以使用一些免费软件与您的朋友快速而简单地设置VPN。