Python 3,通过socket发送一个列表

时间:2017-02-01 16:19:20

标签: python json python-3.x sockets

我试图写一个聊天程序......好吧它没有用。

我写的代码......我删除了所有不必要的代码:

import socket
import time 
import threading
import json

def reciving(name, sock, shutdown):
    ...

host = "127.0.0.1"
port = 0
server = ("127.0.0.1", 2300)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((host, port))
s.setblocking(0)
...

print("Welcome to my Chat")
alias = input("Name: ")
msg = input("-> ")
msg = json.dumps(msg)
alias = json.dumps(alias)
send_data = [msg, alias]
while msg != "q":
    if msg != "":
        send_data = json.dumps(send_data)
        s.sendto(send_data, server)
        msg = input("-> ")
        msg = json.dumps(msg)
        send_data = [msg, alias]
        time.sleep(0.2)
shutdown = True
rT.join()
s.close()

如果我启动程序,首先一切都很好,但写完之后我会收到错误信息:

控制台:

Welcome to my Chat
Name: S
-> hello //this is my input
Traceback (most recent call last):
  File "client.py", line 40, in <module>
    s.sendto(send_data, server)
TypeError: a bytes-like object is required, not 'str'

我想我已经对列表中的字符串进行了编码,然后对列表本身进行编码,这是我必须做的,发送一个列表......对吗? 我已经尝试过编码列表而不是内部的字符串,或者只编码不是列表的字符串......或者用utf-8编码字符串,用json编码列表......它赢了&#39工作:(

那么我需要编码的是什么以及如何将其发送到服务器/套接字?

0 个答案:

没有答案