python - 如何用python socket制作多线程聊天系统
问题描述
我正在制作一个聊天系统,目前我一次只能发送一条消息。有人告诉我这是因为我的聊天服务器是单线程的,这是有道理的。
有人可以生成一些伪代码来帮助我理解如何进行多线程聊天吗?
这是服务器代码:
import socket
serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serv.bind(("", 8080))
serv.listen(5)
while True:
c, addr = serv.accept()
print("Connection recieved from", addr)
while True:
strig = str(input("Enter your message to the client: "))
c.send(strig.encode())
thing = c.recv(1024)
message = list(str(thing))
message.remove("b")
printable = ""
for item in message:
printable += item
print(printable)
strig = str(input("Enter your message to the client: "))
c.send(strig.encode())
thing = c.recv(1024)
message = list(str(thing))
message.remove("b")
printable = ""
for item in message:
printable += item
print(printable)
这是客户端代码:
import socket
from time import sleep
s = socket.socket()
port = 8080
s.connect(("10.0.0.92", port))
while True:
thing = str(s.recv(1024))
message = list(thing)
message.remove("b")
#message.remove("/")
printable = ""
for item in message:
printable += item
print(printable)
your = str(input("Enter your message to the server: "))
s.send(your.encode())
thing = str(s.recv(1024))
message = list(thing)
message.remove("b")
#message.remove("/")
printable = ""
for item in message:
printable += item
print(printable)
your = str(input("Enter your message to the server: "))
s.send(your.encode())
提前致谢!!
ps 我希望其中一个人成为服务器,一个人成为客户端。请不要告诉我让他们成为两个客户。
解决方案
推荐阅读
- ruby-on-rails - 克隆/复制 ActiveRecord::Base 实例,包括属性
- git - 由于“不相关的历史”,Git 拒绝拉取,远程和本地 repo 都包含完全相同的文件和更改
- python - 使用 MQTT Python 双向发布和订阅
- sql - 选择单个用户的最大日期时间
- opencl - Darknet - OpenCL 在 clEnqueueNDRangeKernel 中奇怪的时间连续增量
- java - 从其第一个索引的对象数组列表中检索对象数组
- io - Rust 的标准库是否支持直接 IO 文件访问?
- amazon-web-services - 使用静态列表作为 Cloudformation 参数
- bash - 如何调试单个 shell 命令调用,准确查看参数?
- linux - 分析文本/指令段大小