【发布时间】:2019-07-10 15:34:23
【问题描述】:
我正在使用客户端和服务器在 python 中进行有关套接字编程的作业。我目前使用的是 Windows 10。在进入任务的小细节之前,我一直在尝试简单地连接服务器和客户端。
每次我尝试运行客户端文件时,都会收到此错误
File "tcpclient.py", line 9, in <module>
s.connect((host, port))
ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it
我打开了防火墙端口,还是什么都没有。我尝试在客户端和服务器文件中用 '', 0.0.0.0, socket.gethostname() 替换主机,但错误仍然存在。我什至尝试过不同的端口号,但没有任何区别。我试过在 Ubuntu 和 Max 上运行这段代码,我得到了同样的错误——连接被拒绝。我一直在研究许多解决方案,但我仍然没有找到一个有效的解决方案。任何帮助将不胜感激!
注意:此代码是在线获取的,但它本质上是我需要完成的工作的基础。 tcpclient.py
import socket
host = '127.0.0.1'
port = 80
buffer_size = 1024
text = "Hello, World!"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.send(text)
data = s.recv(buffer_size)
s.close()
print("received data:", data)
tcpserver.py
import socket
host = '127.0.0.1'
port = 80
buffer_size = 20
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port))
s.listen(1)
conn, addr = s.accept()
print 'Connection address:', addr
while 1:
data = conn.recv(buffer_size)
if not data: break
print("received data:", data)
conn.send(data) # echo
conn.close()
【问题讨论】:
-
您在尝试客户端之前正在启动服务器,对吧? (另请注意,低于 1024 的端口号通常需要特权才能侦听。)
-
我尝试过先运行服务器,但每次运行时我的终端都会卡住,我无法按 ctrl+x 或 ctrl+c 退出。我也尝试过同时运行客户端和服务器,但客户端仍然会出现相同的错误,然后由于服务器而卡在终端中。
-
@DavisHerring 我已经尝试使用超过 1024 的端口并且它有效! (至少在我的 ubuntu 虚拟机上)我以为我在 Windows 上有特权,但我想没有。谢谢你:)