【发布时间】:2020-10-10 07:46:13
【问题描述】:
我想使用 python 套接字创建一个服务器-客户端聊天程序。我试图通过互联网连接服务器(我)和客户端(我的朋友),但我仍然无法理解这样做的方式。请帮帮我。
服务器:
import socket
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((my host, 12345))
s.listen(1)
conn, addr=s.accept()
while 1:
msg=input(">>")
conn.send(msg.encode())
print("Client:"+conn.recv(1024).decode())
客户:
import socket
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((my host, 12345))
while 1:
print("Server:"+s.recv(1024).decode())
msg=input(">>")
s.send(msg.encode())
【问题讨论】:
-
如何知道我的IP地址以便进入回显服务器中的主机?
-
当您需要通过互联网连接时,它会更加复杂。但是服务器总是可以使用
0.0.0.0。问题使客户端出现问题,因为它必须使用服务器用户只能使用网页检查的服务器外部 IP(因为它是 Internet Provider 路由器的 IP)。其他问题是某些 Internet 提供商可能每 24 小时更改一次此 IP。 Internet 提供商可能会阻止某些端口的其他问题,因此您可能无法使用某些非标准端口。 -
那我该怎么办呢?
-
在服务器上,您可以尝试
0.0.0.0和端口80(HTTP 的标准端口)-s.bind(("0.0.0.0", 80)。然后在服务器访问页面上,即。 httpbin.org/ip 获取服务器的外部 IP(即此时我有外部 IP83.23.34.81),客户端应使用s.connect("83.23.34.81", 80)。但是,如果您的 Internet 提供商阻止了端口80,那么您可能必须搜索其他端口 - 如果只有 Internet 提供商没有阻止所有端口,因为您无法更改它。您的本地路由器(用于访问互联网的服务器)可能会阻塞端口,但如果您有登录名/密码,则可以更改它。 -
如何知道我服务器的关闭端口?
标签: python sockets connection client-server chat