gpt4 book ai didi

python - 只从套接字接收一个字节

转载 作者:太空狗 更新时间:2023-10-29 23:59:56 25 4
gpt4 key购买 nike

我使用 python 编写了一个服务器程序。

我想得到一个字符串,但我只得到一个字符!如何接收字符串?

def handleclient(connection):                                           
while True:
rec = connection.recv(200)
if rec == "help": #when I put help in the client program, rec = 'h' and not to "help"
connection.send("Help Menu!")


connection.send(rec)
connection.close()

def main():
while True:
connection, addr = sckobj.accept()
connection.send("Hello\n\r")
connection.send("Message: ")
IpClient = addr[0]
print 'Server was connected by :',IpClient


thread.start_new(handleclient, (connection,))

最佳答案

使用 TCP/IP 连接,您的消息可能会被分段。它可能一次发送一封信,也可能一次发送全部 - 你永远无法确定。

您的程序需要能够处理这种碎片。要么使用固定长度的数据包(这样你总是读取 X 字节),要么在每个数据包的开头发送数据的长度。如果您只是发送ASCII 字母,您也可以使用特定字符(例如\n)来标记传输结束。在这种情况下,您将阅读直到消息包含 \n

recv(200) 不能保证接收 200 个字节 - 200 只是最大值。

这是您的服务器的示例:

rec = ""
while True:
rec += connection.recv(1024)
rec_end = rec.find('\n')
if rec_end != -1:
data = rec[:rec_end]

# Do whatever you want with data here

rec = rec[rec_end+1:]

关于python - 只从套接字接收一个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13229688/

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