python-3.x - 如何在两台电脑之间发送消息
问题描述
我查看了许多 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的菜鸟,但我有网络经验。您的问题对我来说听起来像是网络问题。在运行程序之前,您必须确保两台计算机之间存在连接,正如您在互联网上提到的笔记本电脑一样。最好的了解方式是互相ping通。您的问题听起来像是典型的 NAT(网络地址转换问题)。
推荐阅读
- bash - 是否有别名来引用终端中最后引用的文件?
- c - 当连接打开但没有数据发送时 send() 和 recv() 返回什么?
- javascript - 使用 jQuery 显示没有特定类的随机 div
- javascript - JS深度优先遍历预购
- android - Android约束不适用于编辑文本
- c - PTY 以较小的尺寸运行
- sqlkata - SqlKata SUM 和更新
- visual-studio-code - 如何在 VS Code 上禁用此框?
- makefile - Makefile: CreateProcess(...) 失败。该系统找不到指定的文件
- linux-kernel - 在 18.04.1-Ubuntu 下的 VirtualBox 中构建最新的 linux 内核时出错