【发布时间】:2016-08-15 17:16:19
【问题描述】:
我正在尝试使用 python 在我的笔记本电脑上测试套接字通信。但是,我不确定为什么没有建立连接?我不断收到目标机器主动拒绝连接的错误消息。我正在尝试使用同一台计算机来运行客户端和服务器部分。服务器运行良好,但客户端没有连接。我想我的主机名错误(127.0.0.1)但不确定我应该使用什么?我还尝试将服务器主机名更改为 (0.0.0.0) 以及客户端要连接的主机名的 IPV4 地址,但这也不起作用。任何帮助将不胜感激!
我的代码(服务器部分):
import socket
comms_socket =socket.socket()
comms_socket.bind(('127.0.0.1', 50000))
comms_socket.listen(10)
connection, address = comms_socket.accept()
while True:
print(connection.recv(4096).decode("UTF-8"))
send_data = input("Reply: ")
connection.send(bytes(send_data, "UTF-8"))
客户部分:
import socket
comms_socket = socket.socket()
comms_socket.connect(('127.0.0.1',50000))
while True:
send_data = input("Message: ")
comms_socket.send(bytes(send_data, "UTF-8"))
print(comms_socket.recv(4096).decode("UTF-8"))
【问题讨论】:
-
无法重现您的问题,您的代码在我的机器上运行良好。 (Windows 7,python 3.5)。检查您是否安装了某种形式的防火墙,阻止您的代码打开套接字。另外,你在什么操作系统上运行这个。
-
这个代码对我来说也很好。顺便说一句,通常的模式是让服务器监听任何地址 (
INADDR_ANY),在 python 中,该地址由空字符串 ("") 指示。然后它将通过 localhost 接口 (127.0.0.1) 或任何其他具有 IP 地址的接口接收消息。客户端始终必须在connect中提供明确的地址。 -
我使用的是 windows 10,python 3.5。我认为当我在 python shell 上运行它时,只是 IDLE 给了我这个问题。当我直接运行时,该程序有效。感谢您的帮助
标签: python sockets tcp client communication