Sockets python中的套接字使用

Sockets python中的套接字使用,sockets,python-3.x,python-sockets,Sockets,Python 3.x,Python Sockets,我想在两台机器之间创建一个聊天程序。我使用的是IP地址为192.168.0.5的机器一,我可以成功地向机器二192.168.0.2发送消息,然后从机器二向机器一发送响应消息 但是,我在任何一台机器的第二次发送尝试中遇到了一个问题(注意,在第二次发送之前,我等待来自初始发送的响应),声称IP地址已在使用中或连接被拒绝,如何更改此设置,以便发送定义数量的选择 我知道下面的代码不是发送和接收多条消息的最有效方式,这可能是for循环的一些描述。例如,范围为(0,5)的sendAndRecieve的 这两

我想在两台机器之间创建一个聊天程序。我使用的是IP地址为192.168.0.5的机器一,我可以成功地向机器二192.168.0.2发送消息,然后从机器二向机器一发送响应消息

但是,我在任何一台机器的第二次发送尝试中遇到了一个问题(注意,在第二次发送之前,我等待来自初始发送的响应),声称IP地址已在使用中或连接被拒绝,如何更改此设置,以便发送定义数量的选择

我知道下面的代码不是发送和接收多条消息的最有效方式,这可能是for循环的一些描述。例如,范围为(0,5)的sendAndRecieve的

这两台机器使用以太网电缆通过交换机连接,代码同时运行

机器1代码:

#Sending first message

host = "192.168.0.5"
port = 4446
from socket import *
s = socket(AF_INET, SOCK_STREAM)
s.bind((host,port))
s.listen(1)
print("listening")
q,addr = s.accept(1024)
data = "This is the first message I am sending"
data = data.encode("utf-8")
q.send(data)
s.close

#Recieving response message 1

while True:
    try:
        host = "192.168.0.2"
        port = 4446
        from socket import*
        s = socket(AF_INET, SOCK_STREAM)
        s.connect((host,port))
        msg = s.recv(1024)
        msg = msg.decode("utf-8")
        print(msg)
        s.close()
    except:
        pass

#Sending second message this is where the problem happens

host = "192.168.0.5"
port = 4446
from socket import *
s = socket(AF_INET, SOCK_STREAM)
s.bind((host,port))
s.listen(1)
print("listening")
q,addr = s.accept(1024)
data = "This is the first message I am sending"
data = data.encode("utf-8")
q.send(data)
s.close
机器2代码:

#Recieving message 1

while True:
    try:
        host = "192.168.0.5"
        port = 4446
        from socket import*
        s = socket(AF_INET, SOCK_STREAM)
        s.connect((host,port))
        msg = s.recv(1024)
        msg = msg.decode("utf-8")
        print(msg)
        s.close()
    except:
        pass

#Sending first message

host = "192.168.0.2"
port = 4446
from socket import *
s = socket(AF_INET, SOCK_STREAM)
s.bind((host,port))
s.listen(1)
print("listening")
q,addr = s.accept(1024)
data = "This is the first message I am sending"
data = data.encode("utf-8")
q.send(data)
s.close

#Recieving response message 1 this is where the problem happens

while True:
    try:
        host = "192.168.0.25"
        port = 4446
        from socket import*
        s = socket(AF_INET, SOCK_STREAM)
        s.connect((host,port))
        msg = s.recv(1024)
        msg = msg.decode("utf-8")
        print(msg)
        s.close()
    except:
        pass

通读您的代码,我看不出机器2的while循环如何停止尝试从机器1接收数据(循环中没有中断,除非遇到错误)。在机器2第一次连接后,机器1会继续运行,但当机器2尝试连接到机器1时,会尝试连接到机器2。这可能是您看到的错误的原因,也是您只看到发送/接收的第一条消息的原因