[英]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()
可能是我的服务器,如果需要的话我会输入! 再次感谢!
信息是正确的! 对alias
和message
进行编码后,它们是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.