首页 > 解决方案 > 如何在两台电脑之间发送消息

问题描述

我查看了许多 Python 套接字模式的教程和源代码,以尝试在两台计算机之间发送一个简单的字符串。

我已经让我的代码在 PC 上独立工作,但未能让代码在两者上运行。这是我目前正在使用的代码:

#server.py
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((socket.gethostname(), 1234))
s.listen(5)

while True:
    # now our endpoint knows about the OTHER endpoint.
    clientsocket, address = s.accept()
    print(f"Connection from {address} has been established.")
    clientsocket.send(bytes("Send test","utf-8"))
    clientsocket.close()
#client.py
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((socket.gethostname(), 1234))


while True:
    full_msg = ''
    while True:
        msg = s.recv(8)
        if len(msg) <= 0:
            break
        full_msg += msg.decode("utf-8")

    if len(full_msg) > 0:
        print(full_msg)

我在两台计算机上运行客户端脚本,但是当我在未运行服务器的 pc 上运行脚本时,我收到错误连接被拒绝错误 [#10061]。我正在运行 python 3.7,一台电脑是通过互联网连接的笔记本电脑,一台是通过以太网电缆连接到路由器的台式机。

如果有人知道我需要更改什么以使程序正确运行,将不胜感激。

标签: python-3.xsockets

解决方案


我是python的菜鸟,但我有网络经验。您的问题对我来说听起来像是网络问题。在运行程序之前,您必须确保两台计算机之间存在连接,正如您在互联网上提到的笔记本电脑一样。最好的了解方式是互相ping通。您的问题听起来像是典型的 NAT(网络地址转换问题)。


推荐阅读