作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是套接字库和服务器端编程的新手。我制作了2个脚本,它们可以在我的机器上完美运行,即server.py
和client.py
。但是,当我在两台不同的计算机上对其进行测试时,它不起作用。
What i want is to make my
server.py
file connected toclient.py
, whereserver.py
will run on my machine and it will be connected toclient.py
on a separate machine at any location in the world.
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = socket.gethostbyname(socket.gethostname())
port = 12048
s.bind((host, port))
s.listen()
print("Server listening @ {}:{}".format(host, port))
while True:
c, addr = s.accept()
print("Got connection from", addr)
c.send(bytes("Thank you", "utf-8"))
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = '192.168.1.162' # The IP printed by the server must be set here
port = 12048
s.connect((socket.gethostname(), port))
msg = s.recv(1024)
print(msg.decode("utf-8"))
client.py
接收文件到我的机器。是否有可能在套接字或我必须导入任何其他库?
最佳答案
客户端仅连接到在同一台计算机上运行的服务器的原因是,因为您使用的是s.connect((socket.gethostname(), port))
而不是s.connect((host, port))
。您的host
IP变量从未使用过。此错误意味着客户端将尝试连接到其自己的主机名,该主机名即为主机名,因此这就是为什么它只能在一台计算机上运行的原因。
您应该像这样修改client.py
:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = '192.168.1.162' # Make sure this is set to the IP of the server
port = 12048
s.connect((host, port))
msg = s.recv(1024)
print(msg.decode("utf-8"))
关于python - 如何使用Python中的套接字库将服务器连接到其他计算机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59286024/
我是一名优秀的程序员,十分优秀!