Python 从服务器获取响应
我正在尝试制作一个服务器-客户机程序,在这个程序中,服务器将侦听客户机的消息,并根据消息做出响应。我从客户端发送一条包含用户名和内容的消息,服务器接受并打印一条消息发送给客户端,直到一切正常。但在发送消息时,服务器会抛出错误:Python 从服务器获取响应,python,python-3.x,sockets,connection,Python,Python 3.x,Sockets,Connection,我正在尝试制作一个服务器-客户机程序,在这个程序中,服务器将侦听客户机的消息,并根据消息做出响应。我从客户端发送一条包含用户名和内容的消息,服务器接受并打印一条消息发送给客户端,直到一切正常。但在发送消息时,服务器会抛出错误: `TypeError: byte indices must be integers or slices, not str` 看起来这条线是个问题,但我不确定 `clientsocket.send(msg['header'] + msg['data'])` 这是一个完
`TypeError: byte indices must be integers or slices, not str`
看起来这条线是个问题,但我不确定
`clientsocket.send(msg['header'] + msg['data'])`
这是一个完整的服务器代码。请让我知道,如果客户代码也是必要的,请
导入套接字
导入时间
进口泡菜
导入选择
HEADERSIZE=10
IP=127.0.0.1
端口=1234
s=socket.socketsocket.AF_INET,socket.SOCK_流
s、 setsockoptsocket.SOL_插座,插座.SO_REUSEADDR,1
s、 bindIP,端口
s、 听
套接字\u列表=[s]
客户端={}
处理消息接收
def接收_消息客户端套接字:
尝试:
消息头=clientsocket.recvHEADERSIZE
如果没有,请选择消息头:
返回错误
消息长度=intmessage头。解码“utf-8”。条带
返回{'header':消息头,'data':clientsocket.recvmessage_length}
除:
返回错误
尽管如此:
读取插槽,异常插槽=选择。选择插槽列表,[],插槽列表
对于read_插槽中的通知_插槽:
如果通知_socket==s:
clientsocket,地址=s.accept
user=receive_messageclientsocket
如果用户为False:
持续
sockets\u list.appendclientsocket
客户端[clientsocket]=用户
已建立来自{address[0]}:{address[1]}的printfConnection!用户:{User['data'].解码'utf-8'}
其他:
消息=接收消息通知套接字
如果消息为False:
printfClose连接来自{客户端[通知的_套接字]['data']。解码'utf-8'}
套接字\u列表。重新指定的\u套接字
del客户端[已通知的\u套接字]
持续
用户=客户端[已通知的\u套接字]
message_decoded=message['data']。解码'utf-8'
printf'从{user[data].decodeutf-8}:{message[data].decodeutf-8}收到消息'
对于客户端中的clientsocket:
如果clientsocket==通知的\u套接字:
如果消息[data].decodeutf-8==y:
d={1:嘿,2:那里}
msg=pickle.dumpsth.jpeg
printmsg
msg=bytesf'{lenmsg:msg=pickle.dumpsth.jpeg将字符串th.jpeg编码为字节对象。
msg=bytesf'{lenmsg:谢谢!这一次,有一个客户端的代码解码错误,但我想我能处理它,谢谢!
clientsocket.send(msg)