【问题标题】:Python socket error occured发生 Python 套接字错误
【发布时间】:2013-03-26 22:32:43
【问题描述】:

这段代码是我写的。

import socket

host = 'localhost'
port = 3794
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.bind((host, port))
while 1:
        print 'Type message you want to send...'
        msg = raw_input()
        if msg == '':
                s.close()
                break
    s.sendall(msg)

然后执行此代码。

Traceback (most recent call last):
  File "socket.py", line 11, in ?
    s.bind((host, port))
  File "<string>", line 1, in bind
socket.error: (99, 'Cannot assign requested address')

怎么了?

你知道解决方案吗?

【问题讨论】:

  • 我试过上面写的代码:UDP sockets don't have sendall() method.
  • 我执行了该代码并且运行良好(尽管没有套接字侦听)。但是 's.sendall(msg)' 中的缩进是错误的。
  • @ffffff,请向我们展示完整的代码,特别是您指定端点的位置(如通过 connect())。在 py2.4 下,EDESTADDRREQ(“需要目标地址”)对我来说失败了。

标签: python sockets


【解决方案1】:

这意味着您已经有一个绑定到 3794 端口的套接字。

这可能是另一个应用程序,或者这意味着在您自己的脚本上次运行后端口尚未释放(如果脚本终止不正确,就会发生这种情况)。

只需尝试使用另一个端口号 - 我相信一切都会好起来的。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,它是由于尝试在错误的主机上收听而引起的。当我将其更改为与代码运行的机器(本地主机)实际关联的 IP 时,问题就消失了。

    【讨论】:

      【解决方案3】:

      出现此错误的主要原因是该端口已被另一个应用程序/服务使用。 选择一个高于注册端口范围的端口号,即 49151

      【讨论】:

        猜你喜欢
        • 2014-12-23
        • 2022-01-24
        • 2018-10-30
        • 1970-01-01
        • 2014-03-30
        • 1970-01-01
        • 2021-10-21
        • 2012-10-30
        • 2016-05-14
        相关资源
        最近更新 更多