Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7/Linux:套接字库绑定类型错误_Python_Linux_Sockets_Python 2.7_Bind - Fatal编程技术网

Python 2.7/Linux:套接字库绑定类型错误

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

我正试图用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, 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