gpt4 book ai didi

python - 客户端和服务器无法交换数据 python

转载 作者:太空宇宙 更新时间:2023-11-04 01:32:17 25 4
gpt4 key购买 nike

我正在使用 python 3.3。这是 Server.py。一切都很好,服务器和客户端都能够连接此处 'tcpcli.send('[%s]%s'%(bytes(ctime(),'utf-8'),data))' 可能有问题。帮帮我

from socket import *
from time import ctime

HOST=''
PORT=21567
BUFSIZ=1024
ADDR=(HOST,PORT)

tcp=socket(AF_INET,SOCK_STREAM)
tcp.bind(ADDR)
tcp.listen(5)

while True:
print('waiting for connection')
tcpcli,addr=tcp.accept()
print('...connected from:',addr)

while True:
data=tcpcli.recv(BUFSIZ)
if not data:
break
tcpcli.send('[%s]%s'%(bytes(ctime(),'utf-8'),data))
tcpcli.close()
tcp.close()

这是客户端.py

    from socket import *


HOST='127.0.0.1'
PORT=21567
BUFSIZ=1024
ADDR=(HOST,PORT)

tcpcli=socket(AF_INET,SOCK_STREAM)
tcpcli.connect(ADDR)


while True:
data=input('>')
if not data:
break
tcpcli.send(data)
data=tcpcli.recv(BUFSIZ)
if not data:
break
print (data.decode('utf-8'))

tcpcli.close()

当我同时运行它们时,它们工作正常,只是我无法从客户端发送任何数据。我收到此错误消息。

tcpcli.send(data)
TypeError: 'str' does not support the buffer interface

最佳答案

您正在使用 Python3。这意味着,当使用 CLI 时,input() 将返回一个 str 对象(相当于 python2 unicode)。它包含您输入的字符的 unicode 代码点的内部表示。要通过字节流接口(interface)(例如管道、套接字……)发送数据,您必须将其转换为字节对象。这很容易通过选择一种编码(例如 UTF-8)并执行如下操作来完成:

data_raw = data.encode("utf-8")
tcpcli.send(data_raw)

您必须类似地调整您的服务器代码,首先解码您从客户端收到的数据,并在对其执行字符串操作后重新编码:

        data_decoded = data.decode("utf-8")
reply = '[%s]%s' % (ctime(), data_decoded)
tcpcli.send(reply.encode("utf-8"))

关于python - 客户端和服务器无法交换数据 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13108441/

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