【问题标题】:UDP Socket Connection Refused on ReceiveUDP 套接字连接在接收时被拒绝
【发布时间】:2020-10-08 18:40:52
【问题描述】:

在python中使用以下代码,我已经能够向服务器发送消息,但是我无法接收到来自服务器的响应。代码如下:

import socket

UDP_IP = "10.10.67.43"
UDP_PORT = 4000
message = b"hello\n"

s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.connect((UDP_IP,UDP_PORT))
s.send(message)
s.recv(2048)
s.close()

这是错误:

      8 s.connect((UDP_IP,UDP_PORT))
      9 s.send(message)
---> 10 s.recv(2048)
     11 s.close()

ConnectionRefusedError: [Errno 111] 连接被拒绝

我在两台 linux 计算机上尝试了这个脚本,但都没有成功。

感谢任何帮助!

【问题讨论】:

  • 奇怪的东西。至少, s.recv 上的错误就是它在错误中所说的。我假设可能是服务器配置错误,或者我的计算机不接受来自它的连接。
  • UDP 中没有“连接”,所以没有什么可以“接受”的。只有发送和读取。任何“连接”都是在应用层处理的逻辑构造,而不是在传输层处理的物理构造,就像在 TCP 中一样。

标签: python sockets


【解决方案1】:

没关系,我想通了。我连接到了错误的主机,而我尝试连接的计算机实际上并没有接受该端口上的任何 UDP 流量。谢谢!

【讨论】:

  • 有道理。在这种情况下,send() 可能会导致网络将 ICMP 错误数据包(“主机无法访问”或“端口无法访问”)发送回您的客户端计算机,在这种情况下,recv() 会接收到它(由于较早的connect()),因此它可能会向您的代码报告错误。
猜你喜欢
  • 2011-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-25
  • 2015-03-24
  • 1970-01-01
相关资源
最近更新 更多