我在python3中创建了一个非常简单的UDP套接字客户端和服务器。 我正在尝试将简单的消息'hello'发送到服务器,我收到错误:
ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it
我不确定它实际上是目标计算机的故障,因为目标计算机是AWS EC2 Ubuntu实例,其中“允许所有流量”配置了安全组。
我确信它必须是我桌面计算机上的某种出站策略......
感谢任何帮助。
这是我的代码:
client.py
import socket
client_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_sock.connect(('servers public ipv4 ip', 8089))
client_sock.send('hello'.encode())
server.py
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('localhost', 8089))
s.listen(5) #5 connections
while True:
conn, addr = s.accept()
buffer = conn.recv(64)
if len(buffer) > 0:
print(buffer.decode())
break
答案 0 :(得分:3)
首先,尽管您使用UDP重复声明(在正文和标签中),但您实际上正在使用TCP,这可以从您使用SOCK_STREAM
和accept
看出。
s.bind(('localhost', 8089))
您明确将服务器绑定到localhost
。但是localhost只是计算机(127.0.0.1
)的环回接口,无法从外部访问。如果您想接受来自其他系统的连接,您需要绑定到特定网络接口的IP地址,或者广泛地绑定到0.0.0.0
- 或者只需使用s.bind('',8089)
。