-1

如果我有带有服务器和客户端程序的简单套接字程序来发送消息,我该如何修改它以使其适用于不同的网络。(说我的朋友,我想从我们的电脑上打个招呼)

错误信息是:

TimeoutError: [WinError 10060] 连接尝试失败,因为连接方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应

#Server
import socket

host = 'local host'
port = 5000

s = socket.socket(socket.AF_INET,
                socket.SOCK_STREAM)

s.bind(('', port))

s.listen(1)

c, addr = s.accept()

print("CONNECTION FROM:", str(addr))

c.send(b"Hi")

msg = "Bye.............."
c.send(msg.encode())

c.close()



#Client
import socket

host = 'local host'
port = 5000

s = socket.socket(socket.AF_INET,
                socket.SOCK_STREAM)

s.connect(('127.0.0.1', port))

msg = s.recv(1024)

while msg:
    print('Recived:' + msg.decode())
    msg = s.recv(1024)

s.close()

4

1 回答 1

0

在路由器上设置端口转发。假设您的本地系统是服务于端口 5000 的服务器,而您的朋友是客户端。

  1. 在服务器上打开命令提示符并运行ipconfig以获取您的本地 IP 地址。它通常采用 192.168.xx 的形式,但可能会有所不同。它也应该在路由器的状态页面中可用。

  2. 在您的路由器上,为内部 IP = 本地 IP、内部端口 = 5000、外部端口 = 5000 配置端口转发。

  3. 您的路由器还应该在其状态页面上显示您的外部 Internet 地址。你也可以只是谷歌whatsmyip。将该 IP 和外部端口号 (5000) 提供给您的朋友。他们使用它来将他们的客户端连接到您的服务器。

于 2021-04-10T19:11:57.593 回答