gpt4 book ai didi

python - 如何使用Python中的套接字库将服务器连接到其他计算机?

转载 作者:行者123 更新时间:2023-12-03 11:57:42 26 4
gpt4 key购买 nike

我是套接字库和服务器端编程的新手。我制作了2个脚本,它们可以在我的机器上完美运行,即server.pyclient.py。但是,当我在两台不同的计算机上对其进行测试时,它不起作用。

What i want is to make my server.py file connected to client.py, where server.py will run on my machine and it will be connected to client.py on a separate machine at any location in the world.



我只知道套接字。但是如果这个问题可以通过使用其他库来解决,那也可以。

这是我的代码:

server.py
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"))

client.py
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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com