Python 網(wǎng)絡(luò)編程之TCP客戶端/服務(wù)端功能示例【基于socket套接字】
本文實(shí)例講述了Python 網(wǎng)絡(luò)編程之TCP客戶端/服務(wù)端功能。分享給大家供大家參考,具體如下:
demo.py(TCP客戶端):
import socket def main(): # 1. 創(chuàng)建tcp的套接字 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2. 鏈接服務(wù)器 # tcp_socket.connect(("192.168.33.11", 7890)) server_ip = input("請(qǐng)輸入要鏈接的服務(wù)器的ip:") server_port = int(input("請(qǐng)輸入要鏈接的服務(wù)器的port:")) server_addr = (server_ip, server_port) tcp_socket.connect(server_addr) # 3. 發(fā)送數(shù)據(jù)/接收數(shù)據(jù) send_data = input("請(qǐng)輸入要發(fā)送的數(shù)據(jù):") tcp_socket.send(send_data.encode("utf-8")) # 接收數(shù)據(jù)。 會(huì)阻塞代碼,直到接收到數(shù)據(jù) recv_data = tcp_socket.recv(1024) # 1024表示本次接收的最大字節(jié)數(shù)。 print(recv_data.decode("utf-8")) # 4. 關(guān)閉套接字 tcp_socket.close() if __name__ == "__main__": main()
demo.py(TCP服務(wù)端):
import socket def main(): # 1. 創(chuàng)建套接字 socket tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 設(shè)置當(dāng)服務(wù)器先close 即服務(wù)器端4次揮手之后資源能夠立即釋放,這樣就保證了,下次運(yùn)行程序時(shí) 可以立即綁定7890端口 (如果服務(wù)端先close,再啟動(dòng)服務(wù)端就不會(huì)報(bào)端口被占用的錯(cuò)誤。) tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # 2. 綁定本機(jī)ip和端口號(hào) bind tcp_server_socket.bind(("", 7890)) # 3. 監(jiān)聽客戶端的鏈接請(qǐng)求 listen (由主動(dòng)去鏈接服務(wù)器,變成被客戶端鏈接) tcp_server_socket.listen(128) # 128影響鏈接客戶端的數(shù)量(并發(fā)量)(和操作系統(tǒng)也有關(guān)) # 4. 接受客戶端的鏈接 accept。 會(huì)阻塞代碼,直到有客戶端鏈接 new_client_socket, client_addr = tcp_server_socket.accept() print(client_addr) # ("192.168.33.109",53766) 客戶端的ip和端口 # 接收客戶端發(fā)送過(guò)來(lái)的數(shù)據(jù)。 會(huì)阻塞代碼,直到接收到數(shù)據(jù) recv_data = new_client_socket.recv(1024) # 1024表示本次接收的最大字節(jié)數(shù)。 print(recv_data.decode("utf-8")) # 如果recv_data為空,表示客戶端斷開鏈接 # 寫數(shù)據(jù)給客戶端 new_client_socket.send("hahahghai-----ok-----".encode("utf-8")) # 關(guān)閉套接字 new_client_socket.close() # 與客戶端通信的套接字 tcp_server_socket.close() # 服務(wù)器套接字 if __name__ == "__main__": main()
更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python Socket編程技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
跟老齊學(xué)Python之編寫類之一創(chuàng)建實(shí)例
上兩篇文章雖然已經(jīng)對(duì)類有了一點(diǎn)點(diǎn)模糊概念,但是,閱讀前面一講的內(nèi)容的確感到累呀,都是文字,連代碼都沒(méi)有。本講就要簡(jiǎn)單多了,嘗試走一個(gè)類的流程。2014-10-10Python 實(shí)現(xiàn)中值濾波、均值濾波的方法
今天小編就為大家分享一篇Python 實(shí)現(xiàn)中值濾波、均值濾波的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01pandas中read_excel()函數(shù)的基本使用
在Python的數(shù)據(jù)處理庫(kù)pandas中,read_excel()函數(shù)是用于讀取Excel文件內(nèi)容的強(qiáng)大工具,本文就來(lái)介紹一下如何使用,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03pytorch載入預(yù)訓(xùn)練模型后,實(shí)現(xiàn)訓(xùn)練指定層
今天小編就為大家分享一篇pytorch載入預(yù)訓(xùn)練模型后,實(shí)現(xiàn)訓(xùn)練指定層,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01python數(shù)字圖像處理之高級(jí)濾波代碼詳解
這篇文章主要介紹了python數(shù)字圖像處理之高級(jí)濾波代碼詳解,介紹了許多對(duì)圖像處理的濾波方法,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11jupyter notebook 寫代碼自動(dòng)補(bǔ)全的實(shí)現(xiàn)
這篇文章主要介紹了jupyter notebook 寫代碼自動(dòng)補(bǔ)全的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11Python 70行代碼實(shí)現(xiàn)簡(jiǎn)單算式計(jì)算器解析
這篇文章主要介紹了Python 70行代碼實(shí)現(xiàn)簡(jiǎn)單算式計(jì)算器解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08python類:class創(chuàng)建、數(shù)據(jù)方法屬性及訪問(wèn)控制詳解
下面小編就為大家?guī)?lái)一篇python類:class創(chuàng)建、數(shù)據(jù)方法屬性及訪問(wèn)控制詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07