Python3 socket即時(shí)通訊腳本實(shí)現(xiàn)代碼實(shí)例(threading多線(xiàn)程)
Python 提供了兩個(gè)級(jí)別訪(fǎng)問(wèn)的網(wǎng)絡(luò)服務(wù)。:
低級(jí)別的網(wǎng)絡(luò)服務(wù)支持基本的 Socket,它提供了標(biāo)準(zhǔn)的 BSD Sockets API,可以訪(fǎng)問(wèn)底層操作系統(tǒng)Socket接口的全部方法。
高級(jí)別的網(wǎng)絡(luò)服務(wù)模塊 SocketServer, 它提供了服務(wù)器中心類(lèi),可以簡(jiǎn)化網(wǎng)絡(luò)服務(wù)器的開(kāi)發(fā)。
------------------------------------------------服務(wù)端代碼--------------------------------------
__author__ = "托尼老師" """ 即時(shí)通訊原理 @@@ 服務(wù)端代碼 """ from socket import * import threading ip = '0.0.0.0' port =8888 # 定義 socket 參數(shù) Server = socket(AF_INET,SOCK_STREAM) Server.bind((ip,port)) Server.listen() print("[*] SocketServer 正在監(jiān)聽(tīng)...") # 接受函數(shù) def recvs(): while 1: print(' [*] 客戶(hù)端說(shuō): %s '% client.recv(1024).decode('utf-8')) #發(fā)送函數(shù) def sends(): while 1: say = bytes(input(' [*] 我說(shuō): ') , encoding='utf-8') client.send(say) # 堵塞接受請(qǐng)求 client,client_ip = Server.accept() print(client_ip[0] +':'+str(client_ip[1])+' 連接成功!' ) # 創(chuàng)建接受線(xiàn)程 receive = threading.Thread(target =recvs ,args=() ) receive.start() # 創(chuàng)建發(fā)送線(xiàn)程 send = threading.Thread(target =sends ,args=() ) send.start()
------------------------------------------------客戶(hù)端代碼--------------------------------------
__author__ = "托尼老師" """ 即時(shí)通訊原理 @@@ 客戶(hù)端代碼 """ from socket import * import threading ip,port ='127.0.0.1',8888 Client = socket(AF_INET,SOCK_STREAM) Client.connect((ip,port)) def sends() -> '發(fā)送函數(shù)': while 1: say = bytes(input("[*]我說(shuō): "),encoding='utf-8') Client.send(say) def recvs() -> '接受函數(shù)': while 1: print('[*] 服務(wù)端說(shuō): %s ' % Client.recv(1024).decode('utf-8')) receive = threading.Thread(target =recvs ,args=() ) receive.start() # 創(chuàng)建發(fā)送線(xiàn)程 send = threading.Thread(target =sends ,args=() ) send.start()
先執(zhí)行 服務(wù)端代碼,再執(zhí)行客戶(hù)端代碼,可以實(shí)現(xiàn)基本通訊功能
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python中多線(xiàn)程thread與threading的實(shí)現(xiàn)方法
- python基于queue和threading實(shí)現(xiàn)多線(xiàn)程下載實(shí)例
- Python用threading實(shí)現(xiàn)多線(xiàn)程詳解
- python使用threading獲取線(xiàn)程函數(shù)返回值的實(shí)現(xiàn)方法
- Python 使用threading+Queue實(shí)現(xiàn)線(xiàn)程池示例
- Python線(xiàn)程協(xié)作threading.Condition實(shí)現(xiàn)過(guò)程解析
- python中threading和queue庫(kù)實(shí)現(xiàn)多線(xiàn)程編程
- Python中threading庫(kù)實(shí)現(xiàn)線(xiàn)程鎖與釋放鎖
- Python?threading和Thread模塊及線(xiàn)程的實(shí)現(xiàn)
相關(guān)文章
Python使用Crypto庫(kù)實(shí)現(xiàn)加密解密的示例詳解
這篇文章主要為大家詳細(xì)介紹了Python如何使用Crypto庫(kù)實(shí)現(xiàn)加密解密的功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定的幫助,需要的可以參考一下2023-01-01Python實(shí)現(xiàn)高斯函數(shù)的三維顯示方法
今天小編就為大家分享一篇Python實(shí)現(xiàn)高斯函數(shù)的三維顯示方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12淺談Pycharm中的Python Console與Terminal
今天小編就為大家分享一篇淺談Pycharm中的Python Console與Terminal,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01python對(duì)數(shù)組進(jìn)行排序,并輸出排序后對(duì)應(yīng)的索引值方式
今天小編就為大家分享一篇python對(duì)數(shù)組進(jìn)行排序,并輸出排序后對(duì)應(yīng)的索引值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02Python列表list操作相關(guān)知識(shí)小結(jié)
今天,本喵帶大家仔細(xì)溫習(xí)一下Python的列表,溫故而知新,不亦說(shuō)乎,需要的朋友可以參考下2020-01-01Python+Turtle動(dòng)態(tài)繪制一棵樹(shù)實(shí)例分享
這篇文章主要介紹了Python+Turtle動(dòng)態(tài)繪制一棵樹(shù)實(shí)例分享,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01Python錯(cuò)誤NameError:name?'X'?is?not?defined的解決方法
這篇文章主要給大家介紹了關(guān)于Python錯(cuò)誤NameError:name?‘X‘?is?not?defined的解決方法,這是最近工作中遇到的一個(gè)問(wèn)題,文中通過(guò)實(shí)例代碼將解決的方法介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03Python中Collections模塊的Counter容器類(lèi)使用教程
Counter是Python標(biāo)準(zhǔn)庫(kù)提供的一個(gè)非常有用的容器,可以用來(lái)對(duì)序列中出現(xiàn)的各個(gè)元素進(jìn)行計(jì)數(shù),下面就來(lái)一起看一下Python中Collections模塊的Counter容器類(lèi)使用教程2016-05-05