Python 2.7/Linux:套接字库绑定类型错误
我正试图用python编写一个非常简单的服务器Python 2.7/Linux:套接字库绑定类型错误,python,linux,sockets,python-2.7,bind,Python,Linux,Sockets,Python 2.7,Bind,我正试图用python编写一个非常简单的服务器 import socket import sys # Create a TCP/IP socket to listen on server = socket.socket(socket.SOL_SOCKET, socket.SOCK_STREAM) # Prevent from 'address already in use' upon server restart server.setsockopt(socket.SOL_SOCKET, so
import socket
import sys
# Create a TCP/IP socket to listen on
server = socket.socket(socket.SOL_SOCKET, socket.SOCK_STREAM)
# Prevent from 'address already in use' upon server restart
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# Bind the socket to port 8081 on all interfaces
server_address = ('localhost', 8081)
print 'starting up on %s port %s' % server_address
server.bind(server_address)
我已经阅读了我认为正确的套接字库文档,它建议server.bind()接受一个元组参数。但是,我得到了这个错误:
starting up on localhost port 8081
Traceback (most recent call last):
File "pyserver.py", line 14, in <module>
server.bind(server_address)
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
TypeError: argument must be string or read-only character buffer, not tuple
错误。我认为第八条线是为了防止这种情况。发生了什么?套接字的第一个参数。套接字应为地址族:
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
^^^^^^^^^^^^^^
除此之外,您的代码应该可以工作
错误消息的原因:参数必须是字符串
在Linux中,socket.solu socket
的值为1,等于socket.AF\u UNIX
的值。Unix域套接字(AF_Unix)使用路径(字符串)作为地址
>>> import socket
>>> socket.AF_UNIX
1
>>> socket.SOL_SOCKET
1
更新
关于已在使用的错误,请参阅
>>> import socket
>>> socket.AF_UNIX
1
>>> socket.SOL_SOCKET
1