Sockets python中的套接字使用
我想在两台机器之间创建一个聊天程序。我使用的是IP地址为192.168.0.5的机器一,我可以成功地向机器二192.168.0.2发送消息,然后从机器二向机器一发送响应消息 但是,我在任何一台机器的第二次发送尝试中遇到了一个问题(注意,在第二次发送之前,我等待来自初始发送的响应),声称IP地址已在使用中或连接被拒绝,如何更改此设置,以便发送定义数量的选择 我知道下面的代码不是发送和接收多条消息的最有效方式,这可能是for循环的一些描述。例如,范围为(0,5)的sendAndRecieve的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的 这两
这两台机器使用以太网电缆通过交换机连接,代码同时运行
机器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。这可能是您看到的错误的原因,也是您只看到发送/接收的第一条消息的原因