我使用套接字编写了一个非常简单的 python 服务器程序。但我收到上述错误。我不知道我做错了什么。代码是
import socket
ms=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ainfo=socket.getaddrinfo('127.0.0.1',1234)
ms.bind(ainfo)
ms.listen(5)
while True:
conn, addr=ms.accept()
data=ms.recv()
if not data:
break;
ms.sendall(data)
conn.close()
ms.close()
Run Code Online (Sandbox Code Playgroud)
错误是
Traceback (most recent call last):
File "server.py", line 4, in <module>
ms.bind(ainfo)
TypeError: getsockaddrarg: AF_INET address must be tuple, not list
Run Code Online (Sandbox Code Playgroud)
您不需要调用socket.getaddrinfo(). 试试这个:
ms.bind(('127.0.0.1',1234))
Run Code Online (Sandbox Code Playgroud)
引用socket文档:
套接字地址表示如下: ... 一对
(host, port)用于 AF_INET 地址族,其中host是一个字符串,表示 Internet 域符号中的主机名'daring.cwi.nl'或 IPv4 地址'100.50.200.5',并且port是一个整数。