您好,登錄后才能下訂單哦!
小編給大家分享一下Python基于Socket如何實現(xiàn)簡單聊天室,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
1、簡單易用,與C/C++、Java、C# 等傳統(tǒng)語言相比,Python對代碼格式的要求沒有那么嚴(yán)格;2、Python屬于開源的,所有人都可以看到源代碼,并且可以被移植在許多平臺上使用;3、Python面向?qū)ο?,能夠支持面向過程編程,也支持面向?qū)ο缶幊蹋?、Python是一種解釋性語言,Python寫的程序不需要編譯成二進(jìn)制代碼,可以直接從源代碼運行程序;5、Python功能強(qiáng)大,擁有的模塊眾多,基本能夠?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('歡迎進(jìn)入聊天室 ,%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() #進(jìn)行對話 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)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。