通过IP地址进行通信

问题描述 投票:0回答:1

我刚开始学习一本关于网络的入门书,并且已经遇到过使用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和我的,而不是'xx.xx.xx.xxx'我写了我朋友的IP地址)

python networking
1个回答
1
投票

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

在这里阅读更多https://en.wikipedia.org/wiki/Port_forwarding

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

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

© www.soinside.com 2019 - 2024. All rights reserved.