【发布时间】:2019-12-09 11:27:47
【问题描述】:
注意:这个问题已经完全解决了,就像在 server.py 之前运行 client.py 一样
刚刚开始使用套接字编程,我创建了以下代码并希望打印一些字节消息,但它没有这样做。
我只想让任何人都可以在任何 机器。但是机器拒绝这样做。
这是我的代码:
server.py
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
port = 12048
s.bind((socket.gethostname(), port))
s.listen()
while True:
c, addr = s.accept()
print("Got connection from", addr)
c.send(bytes("Thank you", "utf-8"))
client.py
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
port = 12048
s.connect(('192.168.0.1', port))
msg = s.recv(1024)
print(msg.decode("utf-8"))
一些图片可以更好地解释我的错误:
任何帮助将不胜感激!!!
【问题讨论】:
-
您确定
socket.gethostname()返回IP 地址192.168.0.1的主机名吗?你确定192.168.0.1地址吗?这是网关的通用地址,但主机不通用。 -
那我该怎么办?如果我键入另一个主机名/IP 地址,则表示防火墙已阻止它。
-
你在哪里运行服务器?你在哪里运行客户端?它们是否在同一个系统(机器、主机)上?然后将
127.0.0.1用于bind和connect调用。否则,您需要找出服务器主机的实际公共地址,并将其用于connect调用。我还建议您使用通配符地址''进行bind调用,这样服务器将侦听所有可用接口上的连接。 -
萌芽到 0.0.0.0,除非你有充分的理由不这样做。
标签: python python-3.x sockets python-sockets