【问题标题】:socket() function tuple error in python "TypeError: getsockaddrarg: AF_INET address must be tuple, not int"python中的socket()函数元组错误“TypeError:getsockaddrarg:AF_INET地址必须是元组,而不是int”
【发布时间】:2018-01-07 04:23:33
【问题描述】:

我尝试编写一个简单的 Python 代码,用于在服务器端和客户端之间发送/接收消息。当我将我的计算机定义为服务器时,我收到一个错误,如下所示。有趣的是,相同的代码可以在另一台电脑上运行。

服务器代码:

import socket

s = socket.socket()
host = '10.1.1.25' # static ip of the server pc
port = 5001
s.bind(5)
c, addr = s.accept()
print("Got connection from", addr)
while True:
   c.send("Server please type").encode()
   print("From Server :", c.recv(4096))

c.close()

我得到这个错误:

   s.bind(5)
TypeError: getsockaddrarg: AF_INET address must be tuple, not int

我将 s.bind(5) 替换为 s.bind((host,port)) 然后我收到此错误:

   fd, addr = self._accept()
OSError: [WinError 10022] An invalid argument was supplied

客户代码:

import socket

s=socket.socket()
host="10.1.1.25"
port=5001
s.connect((host,port))

while True:
    try:
        print("from server:",s.recv(4096))
        s.send(input("write something").encode())
    except:
        break
s.close()

注意: 我在 windows 8.1 上遇到了这些错误,但它在 windows 10 上有效
客户端示例代码适用于我尝试过的每台计算机

感谢您的帮助。根据您的建议,我这样修改了我的代码;

import socket

s = socket.socket()
host = '10.1.1.25'
port = 5001
s.bind((host,port))
s.listen(5)
c,addr=s.accept()
print("Got connection from", addr)
while True:
    c.send(input("Server please type").encode())
    print("From Server :", c.recv(4096))
s.close()

现在它可以在本地 IP 上工作(当我调整 127.0.0.1 时),我可以在一台计算机上自己通信。即使当我尝试与第二台计算机通信时,我也没有收到任何错误,但我没有得到任何输出

【问题讨论】:

    标签: windows python-3.x sockets networking tuples


    【解决方案1】:

    服务器必须侦听才能接受传入连接。所以正确的顺序是:

    s = socket.socket()
    host = '10.1.1.25' # static ip of the server pc
    port = 5001
    s.bind((host, port))
    s.listen(5)
    end = False
    while not end:
        c, addr = s.accept()
        # process c incoming connection from addr, optionaly set end = True
    s.close()
    

    【讨论】:

      【解决方案2】:

      尝试将主机更改为“127.0.0.1”。
      你说要在自己的电脑上连接,上面的IP地址就是你电脑的IP地址(适用于所有电脑)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-20
        • 2017-02-11
        • 1970-01-01
        • 1970-01-01
        • 2012-03-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多