繁体   English   中英

做一个聊天客户端,将无法正常工作

[英]making a chat client and wont work

这是怎么回事,我被卡住了:(我正在使用3.4.4,如果这样做可以帮助我尝试一切!我什至已经搜索过!它一直在说:

Traceback (most recent call last):
  File "C:\Users\matthew\Desktop\chatclient.py", line 36, in <module>
    s.sendto(alias.encode() + ": " + message.encode(), server)
TypeError: can't concat bytes to str

这是代码:

import socket
import _thread
import threading
import time

tLock = threading.Lock()
shutdown = False

def recieving(name, sock):
    while not shutdown:
        try:
                tLock.acquire()
                while True:
                    data.addr = sock.recvfrom(1024).decode() 
                    print (str(data)) 
        except:
            pass
        finally:
            tLock.release()
host = '127.0.0.1'
port = 0

server = ('127.0.0.1', 5000)

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((host, port))
s.setblocking(0)

rT = threading.Thread(target=recieving, args=("recvthread", s))
rT.start()

alias = input("Name: ")
message = input(alias + "-> ")
while message != 'q':
    if message != '':
        s.sendto(alias.encode() + ": " + message.encode(), server)   
    tLock.acquire()
    message = input(alias + "-> ")
    tLock.release()
    time.sleep(0.2)

shutdown = True
rT.join()
s.close()

可能是我的服务器,如果需要的话我会输入! 再次感谢!

信息是正确的! aliasmessage进行编码后,它们是bytes而不是字符串。 但是": "是一个字符串,因此是错误的。 在python 3.x中,字符串是unicode,需要编码为字节以保存到磁盘或通过网络发送。

另一个但细微的错误是您使用的是计算机的默认编码,但实际上发送方和接收方的计算机都应该同意编码并使用该编码。 UTF-8是一个不错的选择。

所以,改变

s.sendto(alias.encode() + ": " + message.encode(), server)

s.sendto("{}: {}".format(alias, message).encode('utf-8'), server)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM