python實現(xiàn)簡單多人聊天室
更新時間:2018年12月11日 15:57:23 作者:dk_zhe
這篇文章主要為大家詳細介紹了python實現(xiàn)簡單多人聊天室功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了python實現(xiàn)多人聊天室的具體代碼,供大家參考,具體內(nèi)容如下
剛開始學習python,寫了一個聊天室練練手。
Server.py
import socket,select,thread; host=socket.gethostname() port=5963 addr=(host,port) inputs=[] fd_name={} def who_in_room(w): name_list=[] for k in w: name_list.append(w[k]) return name_list def conn(): print 'runing' ss=socket.socket() ss.bind(addr) ss.listen(5) return ss def new_coming(ss): client,add=ss.accept() print 'welcome %s %s' % (client,add) wel='''welcome into the talking room . please decide your name.....''' try: client.send(wel) name=client.recv(1024) inputs.append(client) fd_name[client]=name nameList="Some people in talking room, these are %s" % (who_in_room(fd_name)) client.send(nameList) except Exception,e: print e def server_run(): ss=conn() inputs.append(ss) while True: r,w,e=select.select(inputs,[],[]) for temp in r: if temp is ss: new_coming(ss) else: disconnect=False try: data= temp.recv(1024) data=fd_name[temp]+' say : '+data except socket.error: data=fd_name[temp]+' leave the room' disconnect=True if disconnect: inputs.remove(temp) print data for other in inputs: if other!=ss and other!=temp: try: other.send(data) except Exception,e: print e del fd_name[temp] else: print data for other in inputs: if other!=ss and other!=temp: try: other.send(data) except Exception,e: print e if __name__=='__main__': server_run()
client.py
import socket,select,threading,sys; host=socket.gethostname() addr=(host,5963) def conn(): s=socket.socket() s.connect(addr) return s def lis(s): my=[s] while True: r,w,e=select.select(my,[],[]) if s in r: try: print s.recv(1024) except socket.error: print 'socket is error' exit() def talk(s): while True: try: info=raw_input() except Exception,e: print 'can\'t input' exit() try: s.send(info) except Exception,e: print e exit() def main(): ss=conn() t=threading.Thread(target=lis,args=(ss,)) t.start() t1=threading.Thread(target=talk,args=(ss,)) t1.start() if __name__=='__main__': main()
運行時先啟動服務(wù)端。進入聊天室先起一個昵稱。服務(wù)端會向客戶端發(fā)送當前聊天室內(nèi)聊天人的列表。一個客戶端發(fā)出的消息會通過服務(wù)端發(fā)給其他客戶端。
效果如下:
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python Numpy 控制臺完全輸出ndarray的實現(xiàn)
這篇文章主要介紹了Python Numpy 控制臺完全輸出ndarray的實現(xiàn)方式,希望給大家做個參考,一起跟隨小編過來看看吧2020-02-02淺析Python中壓縮zipfile與解壓縮tarfile模塊的使用
Python?提供了兩個標準庫模塊來處理文件的壓縮和解壓縮操作:zipfile和tarfile,本文將分享?這兩個模塊的使用方法,感興趣的小伙伴可以跟隨小編一起學習一下2023-10-10Django cookie和session的應(yīng)用場景及如何使用
今天我們來重點看下Django中session和cookie的用法吧。我們會介紹cookie和session的工作原理,還會分享實際應(yīng)用的案例。2021-04-04