亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python socket實(shí)現(xiàn)聊天室

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

本文實(shí)例為大家分享了python socket實(shí)現(xiàn)聊天室的具體代碼,供大家參考,具體內(nèi)容如下

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)) # 發(fā)數(shù)據(jù) soc.send(msg.encode('utf-8'))’’’用于監(jiān)聽(tīng)已經(jīng)建立連接的客戶端發(fā)來(lái)的消息’’’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')) #接收到來(lái)自客戶端的消息。 eg: data = {’to_addr’:’msg’:’’}print(’來(lái)自%s的消息:%s’%(ip,data[’msg’]))# 客戶端發(fā)過(guò)來(lái)的數(shù)據(jù)# 數(shù)據(jù)有兩種情況 一種是發(fā)給所有人的 另一種單獨(dú)發(fā)給某一個(gè)人的if data.get(’to_addr’): #傳過(guò)來(lái)一個(gè)json格式的字典,如果這個(gè)to_addr不是空的話,就私發(fā)給目標(biāo)客戶 target_ip = data['to_addr']#從data字典里中獲取目標(biāo)ip target_conn = clients.get(target_ip) #獲取目標(biāo)客戶的conn鏈接 send_msg(target_conn,data[’msg’]) #發(fā)送訊息else: for ip,conn in clients.items():# if c != target_conn:send_msg(conn,data[’msg’])#data[’msg’]# # 從所有客戶端列表中找到這一個(gè) 發(fā)給它# to_addr = data['to_addr']# # print(data['to_addr'],'_______________')# soc = clients.get(to_addr)# send_msg(soc,data['msg'])# else:# # 遍歷所有客戶端 發(fā)給每一個(gè)人# for k,soc in clients.items():# # if soc != c:# send_msg(soc,data['msg'])while True: ’’’以下代碼用于檢測(cè)是否有客戶端連接’’’ c,add = s.accept() print('%s' % add[0],'連接到服務(wù)器!') clients[add[0]] = c # 把ip地址作為key,conn作為value存入clients字典中 ,clients = {’192.188.3.4’:conn鏈接} if debug:print(’clients=%s’%clients) ’’’以下代碼用于監(jiān)聽(tīng)已經(jīng)建立連接的客戶端發(fā)來(lái)的消息’’’ pool.submit(task,add,c)

client端

import socket,json,structfrom threading import Threadc = socket.socket()c.connect(('127.0.0.1',8848))print('連接服務(wù)器成功!')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)# 開(kāi)啟線程處理接收數(shù)據(jù)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)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 日韩欧美一区二区三区视频 | 婷婷激情综合网 | 成人特级毛片 | 亚洲午夜18 | 国产美女a做受大片在线观看 | 一级片免费网址 | 新久草视频| 色播亚洲视频在线观看 | 中文字幕日本在线视频二区 | 欧洲欧美成人免费大片 | 成人免费视频77777 | 亚洲精品99久久久久中文字幕 | 午夜宅男宅女看在线观看 | 亚洲一区二区三区免费在线观看 | 日本免费乱人伦在线观看 | 国产成人精品免费视频大全可播放的 | 可以看的黄色网址 | 一级黄色性感片 | 色播视频在线观看免费 | 九九久久国产精品免费热6 九九天天影视 | 免费看人做人爱视频拍拍拍 | 婷婷色网站 | 国产免费私拍一区二区三区 | 亚洲第一区在线观看 | 欧美日韩性生活视频 | www成人 | 日本爽妇网 | www.久色 | 污网站网址 | 国产区1| 国产sss | 久久人成 | 狠狠亚洲婷婷综合色香五 | 日韩在线第一区 | 久久精品在线免费观看 | 亚洲国产精品嫩草影院久久 | 国产精品三级一区二区 | 日韩欧美中文字幕一区 | 久久丝袜视频 | 国内精品视频免费观看 | 玖玖精品在线观看 |