gpt4 book ai didi

python - socket.send 在回声客户端的 python 代码中只工作一次

转载 作者:太空狗 更新时间:2023-10-30 02:34:26 27 4
gpt4 key购买 nike

我有以下代码用于echo 客户端,它使用套接字连接将数据发送到echo 服务器:

echo_client.py

import socket

host = '192.168.2.2'
port = 50000
size = 1024

def get_command():
#..Code for this here

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host,port))
while 1:
msg = get_command()
if msg == 'turn on':
s.send('Y')
elif msg == 'turn off':
s.send('N')
elif msg == 'bye bye':
break
else:
s.send('X')
data = s.recv(size)
print 'Received: ',data

s.close()

echo_server.py

import socket 

host = ''
port = 50000
backlog = 5
size = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host,port))
s.listen(backlog)
while 1:
client, address = s.accept()
data = client.recv(size)
if data:
client.send(data)
client.close()

我面临的问题是,在客户端 s.send 只在第一次工作,即使它处于无限循环中。客户端因连接超时而崩溃,在第一次发送/接收完成一段时间后

为什么 s.send 只工作一次?。我该如何在我的代码中解决这个问题?

请帮忙谢谢你

最佳答案

您的服务器代码只调用一次recv。如果您只想接收一个连接,您应该调用一次 accept,但随后您需要循环调用 recvsend

关于python - socket.send 在回声客户端的 python 代码中只工作一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8347107/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com