日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

socket编程实现多人聊天室

發布時間:2024/3/24 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 socket编程实现多人聊天室 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?說明:需先運行服務端,再運行客戶端

要實現多個客戶端同時進行可在控制臺中運行多個客戶端程序

代碼分享?

socket服務端

import socket import threading #存入用戶和連接名的字典 mydict=dict() #創建列表存入連接值 mylist=list() #把聊天信息發送給除自己之外的所有人 def sendsum(fileno,message):for conn in mylist:try:if conn.fileno()!=fileno:conn.send(message.encode())except:pass #保持客戶端與服務器端的持續連接 def run(conn_server,fileno):username=conn_server.recv(1024).decode()print(username)mydict[fileno]=username#存入連接套接字mylist.append(conn_server)#向除自己之外的其他人發送信息sendsum(conn_server.fileno(),'系統提示* '+username+'已經進入系統,快和他聊天吧!')while True:try:client_message=conn_server.recv(1024).decode()print(username+':'+client_message)if client_message:sendsum(conn_server.fileno(), username + ' say:' + client_message)except:#一旦其中的一個客戶端關閉就關閉通信套接字,并向其他用戶發送提示信息sendsum(conn_server.fileno,'*'+username+'已經離開聊天室'+'*')conn_server.close()return socket_server=socket.socket(socket.AF_INET,socket.SOCK_STREAM) socket_server.bind(('localhost',4002)) socket_server.listen(128) print('監聽開始了!') while True:conn_server,ip_address=socket_server.accept()print(conn_server)if conn_server.recv(1024).decode()=='1':conn_server.send('*connection is successsful!!!*\n * welcome to chat *'.encode())threadsum=threading.Thread(target=run,args=(conn_server,conn_server.fileno()))threadsum.setDaemon(True)threadsum.start()else:print("*連接失敗!退出程序*")conn_server.close()socket_server.close()

socket客戶端

import socket #創建套接字 import threading def sendProcess(socket_client):while True:try:myMassage=input('me:')socket_client.send(myMassage.encode())print('發送成功!!')except:pass def acceptProcess(socket_client):while True:try:print(socket_client.recv(1024).decode())except:pass socket_client=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #連接服務器socket socket_client.connect(('localhost',4002)) socket_client.send(b'1') #接受服務器的連接狀態 data=socket_client.recv(1024).decode() print(data) #用戶登錄 username=input('請輸入用戶名:') socket_client.send(username.encode())#創建子線程,用來收發信息 sendThread=threading.Thread(target=sendProcess,args=(socket_client,)) acceptThread=threading.Thread(target=acceptProcess,args=(socket_client,)) threads=[sendThread,acceptThread] for i in threads:i.setDaemon(True)i.start() i.join()

總結

以上是生活随笔為你收集整理的socket编程实现多人聊天室的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。