类型错误:getsockaddrarg:AF_INET 地址必须是元组,而不是列表

1 python sockets

我使用套接字编写了一个非常简单的 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)

Rob*_*obᵩ 5

您不需要调用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是一个整数。