发生Python套接字错误

时间:2009-08-20 09:36:41

标签: python sockets

我写了这段代码。

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')

怎么了?

你知道解决方案吗?

3 个答案:

答案 0 :(得分:9)

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

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

只需尝试使用其他端口号 - 我相信一切都会正常工作。

答案 1 :(得分:4)

我有同样的问题,这是因为试图在错误的主机上听。当我将其更改为与代码运行的机器(localhost)实际关联的IP时,问题就消失了。

答案 2 :(得分:0)

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