0

我有三台机器连接到没有互联网的集线器,我正在尝试使用一个像 python 3.3 中的聊天服务一样说话的代码。但是,当我运行发送代码时,它停滞在 Listening for connection... 并且当我在另一台机器上启动第二个程序以接收它时,会出现以下错误消息:

Traceback(最近一次调用最后一次):文件“C:\Python33\recv.py”,第 5 行,在 s.connect((host,port)) TimeoutError: [WinError 10060] 连接尝试失败,因为连接方没有一段时间后正确响应,或者由于连接的主机没有响应而建立的连接失败。

这是发送消息的第一个代码:

host = "127.0.0.1"
port = 4446
from socket import ^
s = socket(AF_INET, SOCK_STREAM)
s.bind((host,port))
s.listen(1)
print("listening for connections...")
q,addr = s.accept()
data = input("Data to be sent: ")
q.send(data)
s.close()

这是要接收的第二个代码:

host = "86.10.137.206"
port = 4446
from socket import *
s = socket(AF_INET, SOCK_STREAM)
s.connect((host,port))
msg = s.recv(1024)
print("This is the message:",msg)
s.close()

可以做些什么来解决这个问题。是不是和127.0.0.1有关

4

1 回答 1

0

IP 地址 127.0.0.1 是环回地址,被特殊对待。它用于本地系统上的进程间通信——数据包不会离开系统。

请查找并列出每个系统的 IP 地址。您应该有一个路由器或通过 DHCP 或其他东西分配 IP 地址的东西。使用 ifconfig 显示所有接口,并获取插入集线器的接口的 IP 地址。

每个客户端都必须配置为侦听服务器地址。

将您的主机端口更改为 = '',因为那是 INADDR_ANY 的 pythonese。通过指定 127.0.0.1,您指定在环回端口上侦听,

host = ''
port = 4446
from socket import ^
s = socket(AF_INET, SOCK_STREAM)
s.bind((host,port))
s.listen(1)
print("listening for connections...")
q,addr = s.accept()
data = input("Data to be sent: ")
q.send(data)
s.close()
于 2013-10-08T16:37:29.513 回答