聊天室 - 线程版 (未完成版 已经实现 实时收发,与多人聊天未做区分)
聊天室
服务端
import socket
from threading import Thread
server = socket.socket()
server.bind(('127.0.0.1', 1688))
server.listen(5)
def send_msg(c, addr):
while True:
msg = input(f'\n发消息给{addr}>>>')
c.send(msg.encode('utf8'))
def recv_msg(c, addr):
while True:
try:
msg = c.recv(1024)
print(f'\n收到{addr}的消息:', msg.decode('utf8'))
except Exception as e:
print(f'{c}断开')
c.close()
break
print('启动')
while True:
c, addr = server.accept()
print(f'{c}进入连接!')
try:
# 分别创建2个线程,一个接消息,一个发消息
t1 = Thread(target=send_msg, args=(c, addr))
t2 = Thread(target=recv_msg, args=(c, addr))
# 将两个线程分别启动
t1.start()
t2.start()
except Exception as e:
print(e)
客户端
import socket
from threading import Thread
clien = socket.socket()
flag = clien.connect(('127.0.0.1', 1688))
def send_msg(client):
while True:
msg = input('>>>>>')
client.send(msg.encode('utf8'))
def recv_msg(client):
while True:
msg = clien.recv(1024)
print(f'{flag}', msg.decode('utf8'))
# 分别创建2个线程,一个接消息,一个发消息
t1 = Thread(target=send_msg, args=(clien,))
t2 = Thread(target=recv_msg, args=(clien,))
# 将两个线程分别启动
t1.start()
t2.start()
![微信](https://www.cnblogs.com/images/cnblogs_com/bladecheng/1492360/o_weinxin.png)
![QQ](https://www.cnblogs.com/images/cnblogs_com/bladecheng/1492360/o_qrcode_1561712740560.jpg)
个性签名:独学而无友,则孤陋而寡闻!
如果觉得这篇文章对你有小小的帮助的话,记得点个“关注”哦,博主在此感谢!还可以扫码添加好友,交流编程上的问题哦!
万水千山总是情,点赞再走行不行!哈哈哈(っ•̀ω•́)っ✎⁾⁾!