Python套接字发生错误。

4
我写了这段代码。
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套接字没有sendall()方法。 - Pratik Deoghare
1
我执行了那段代码,它可以正常运行(尽管没有套接字在侦听)。但是在“s.sendall(msg)”中缩进不正确。 - ramosg
@ffffff,请向我们展示完整的代码,特别是您指定端点的位置(如connect())。在py2.4下,我遇到了EDESTADDRREQ(“需要目标地址”)错误。 - pilcrow
3个回答

9
这意味着您已经将一个套接字绑定到了3794端口。这可能是另一个应用程序,也可能意味着在上一次运行您自己的脚本后,该端口尚未被释放(如果脚本异常终止,则会发生这种情况)。只需尝试使用另一个端口号 - 我相信一切都会正常工作。

4

我曾经遇到过同样的问题,原因是尝试在错误的主机上进行监听。当我将其更改为实际与运行代码的机器相关联的IP(本地主机)时,问题就消失了。


0

这个错误通常是由于端口已被另一个应用程序/服务使用而引起的。 选择一个高于注册端口范围的端口号,即49151。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接