小編給大家分享一下Python基于Socket如何實現(xiàn)簡單聊天室,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
華州ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!1、簡單易用,與C/C++、Java、C# 等傳統(tǒng)語言相比,Python對代碼格式的要求沒有那么嚴格;2、Python屬于開源的,所有人都可以看到源代碼,并且可以被移植在許多平臺上使用;3、Python面向?qū)ο螅軌蛑С置嫦蜻^程編程,也支持面向?qū)ο缶幊蹋?、Python是一種解釋性語言,Python寫的程序不需要編譯成二進制代碼,可以直接從源代碼運行程序;5、Python功能強大,擁有的模塊眾多,基本能夠?qū)崿F(xiàn)所有的常見功能。
具體內(nèi)容如下
服務(wù)端
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/7/27 15:34 # @File : Server.py """ 聊天室服務(wù)端 """ import socket,select host='' port=7799 addr=(host,port) inputs=[] members={} #配置服務(wù)端 def start_Server(): server=socket.socket(socket.AF_INET,socket.SOCK_STREAM) server.bind(addr) server.listen(5) return server #返回聊天室成員列表 def show_members(w): name_list=[] for i in w: name_list.append(w[i]) return name_list #處理新的成員 def new_member(server): client,addr=server.accept() print('歡迎進入聊天室 ,%s,%s' % (client,addr)) try: client.send('請輸入名字') name=client.recv(1024) inputs.append(client) members[client]=name names='其它用戶%s'% (show_members(members)) client.send(names) except Exception,e: print(e) #正式啟動服務(wù)端 def server_run(): server=start_Server() print 'start' inputs.append(server) while True: rs,ws,es=select.select(inputs,[],[]) for temp in rs: if temp is server: new_member(temp) else: disConnect=False try: data=temp.recv(1024) data=members[temp]+'說'+data except socket.error: data=members[temp]+'離開' disConnect=True if disConnect: inputs.remove(temp) print data for other in inputs: if other!=server and other!=temp: try: other.send(data) except Exception,e: print(e) del members[temp] else: print data for other in inputs: if other!=server and other!=temp: try: other.send(data) except Exception,e: print(e) if __name__ == '__main__': server_run()
客戶端
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/7/27 15:34 # @File : Client.py """ 聊天室客戶端 """ import socket import select import threading host='127.0.0.1' port=7799 addr=(host,port) #配置連接 def connect(): client=socket.socket() client.connect(addr) return client #顯示用戶列表 def show_member(s): my=[s] while True: rs,ws,es=select.select(my,[],[]) if s in rs: try: print s.recv(1024) except socket.error: print 'socket is error' exit() #進行對話 def talk(s): while True: try: info=raw_input('>>>') except Exception: print 'can\'t input' exit() try: s.send(info) except Exception,e: print e exit() #主函數(shù) def main(): client=connect() t=threading.Thread(target=show_member,args=(client,)) t.start() t1=threading.Thread(target=talk,args=(client,)) t1.start() if __name__ == '__main__': main()
看完了這篇文章,相信你對“Python基于Socket如何實現(xiàn)簡單聊天室”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司行業(yè)資訊頻道,感謝各位的閱讀!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。