成人视屏在线观看-国产99精品-国产精品1区2区-欧美一级在线观看-国产一区二区日韩-色九九九

您的位置:首頁技術文章
文章詳情頁

python socket實現聊天室

瀏覽:28日期:2022-06-15 10:41:26

本文實例為大家分享了python socket實現聊天室的具體代碼,供大家參考,具體內容如下

server端

import socketimport json,structfrom concurrent.futures import ThreadPoolExecutordebug = Trues = socket.socket()s.bind(('127.0.0.1',8848))s.listen()clients = {}pool = ThreadPoolExecutor(100)def send_msg(soc, msg): l = len(msg.encode('utf-8')) soc.send(struct.pack('q',l)) # 發數據 soc.send(msg.encode('utf-8'))’’’用于監聽已經建立連接的客戶端發來的消息’’’def task(ip,c): while True:l = c.recv(8)ls = struct.unpack('q',l)[0]data = json.loads(c.recv(ls).decode('utf-8')) #接收到來自客戶端的消息。 eg: data = {’to_addr’:’msg’:’’}print(’來自%s的消息:%s’%(ip,data[’msg’]))# 客戶端發過來的數據# 數據有兩種情況 一種是發給所有人的 另一種單獨發給某一個人的if data.get(’to_addr’): #傳過來一個json格式的字典,如果這個to_addr不是空的話,就私發給目標客戶 target_ip = data['to_addr']#從data字典里中獲取目標ip target_conn = clients.get(target_ip) #獲取目標客戶的conn鏈接 send_msg(target_conn,data[’msg’]) #發送訊息else: for ip,conn in clients.items():# if c != target_conn:send_msg(conn,data[’msg’])#data[’msg’]# # 從所有客戶端列表中找到這一個 發給它# to_addr = data['to_addr']# # print(data['to_addr'],'_______________')# soc = clients.get(to_addr)# send_msg(soc,data['msg'])# else:# # 遍歷所有客戶端 發給每一個人# for k,soc in clients.items():# # if soc != c:# send_msg(soc,data['msg'])while True: ’’’以下代碼用于檢測是否有客戶端連接’’’ c,add = s.accept() print('%s' % add[0],'連接到服務器!') clients[add[0]] = c # 把ip地址作為key,conn作為value存入clients字典中 ,clients = {’192.188.3.4’:conn鏈接} if debug:print(’clients=%s’%clients) ’’’以下代碼用于監聽已經建立連接的客戶端發來的消息’’’ pool.submit(task,add,c)

client端

import socket,json,structfrom threading import Threadc = socket.socket()c.connect(('127.0.0.1',8848))print('連接服務器成功!')def recver(): while True:lens_bytes = c.recv(8)lens = struct.unpack('q', lens_bytes)[0]recv_msg = c.recv(lens).decode('utf-8')print(recv_msg)# 開啟線程處理接收數據Thread(target=recver).start()while True: msg = input('>>>>:').strip() # 阻塞 if '@' in msg:info = {'msg':msg.split('@')[0],'to_addr':msg.split('@')[1]} else:info = {'msg': msg} data = json.dumps(info).encode('utf-8') c.send(struct.pack('q',len(data))) c.send(data)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 一级做a爱过程免费视频时看 | 欧美成人免费一区在线播放 | 成人国产精品视频频 | 国产成人精品免费视频大全可播放的 | 亚洲日本高清 | 久久成人18免费 | 国产伦精品一区二区三区四区 | 91精品欧美成人 | 三级黄色毛片视频 | 成人在线一区二区三区 | 亚洲精品一区二区手机在线 | 在线观看精品国内福利视频 | 久久成人免费观看草草影院 | 成人欧美一区二区三区视频 | 日韩在线中文字幕 | 成年人精品视频 | 欧美亚洲国产成人高清在线 | 韩国a级毛片 | 欧美激情 自拍 | 国产成人久久精品麻豆二区 | 日本三级在线观看中文字 | 亚洲国产品综合人成综合网站 | 国产成人盗拍精品免费视频 | 亚洲qingse中文久久网 | 日本特级黄毛片毛片视频 | 自拍视频网 | 日韩一区二区久久久久久 | 国产三级日本三级日产三 | 日本久久网 | 国产日本一区二区三区 | 六月成人网 | 日本高清视频www夜色资源 | 成人18免费入口 | 亚洲欧洲日韩在线 | 一级做a爱片特黄在线观看 一级做a爱片特黄在线观看免费看 | 亚洲欧美日本综合一区二区三区 | 男人躁女人躁的好爽免费视频 | 欧美日韩视频在线第一区二区三区 | 欧美黑人性xxx猛交 欧美很黄视频在线观看 | 99爱视频在线观看 | 91欧美一区二区三区综合在线 |