python日記(使用TCP實(shí)現(xiàn)的對(duì)話客戶(hù)端和服務(wù)器)
TCP 客戶(hù)端
一個(gè)使用TCP協(xié)議實(shí)現(xiàn)可連續(xù)對(duì)話的客戶(hù)端示例代碼:
import socket # 客戶(hù)端配置 HOST = 'localhost' PORT = 12345 # 創(chuàng)建TCP套接字并連接服務(wù)器 client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect((HOST, PORT)) while True: # 獲取用戶(hù)輸入 message = input("請(qǐng)輸入要發(fā)送的消息:") # 發(fā)送消息到服務(wù)器 client_socket.sendall(message.encode("utf-8")) # 接收服務(wù)器傳回的消息 data = client_socket.recv(1024) print(f"收到來(lái)自服務(wù)器的消息:{data.decode('utf-8')}") # 關(guān)閉套接字 client_socket.close()
在這個(gè)示例中,我們首先創(chuàng)建了一個(gè)TCP套接字,并使用connect()
函數(shù)連接到指定的服務(wù)器地址和端口。然后,我們通過(guò)用戶(hù)輸入不斷發(fā)送消息到服務(wù)器,并等待服務(wù)器響應(yīng)并顯示其結(jié)果。請(qǐng)注意,由于TCP是面向連接的協(xié)議,因此我們可以通過(guò)該連接保證消息的可靠性和順序性。
最后,我們通過(guò)close()
函數(shù)關(guān)閉套接字。
需要注意的是,當(dāng)我們使用TCP協(xié)議時(shí),需要確保服務(wù)端也使用TCP協(xié)議進(jìn)行相應(yīng)的通信。
TCP 服務(wù)端
以下是一個(gè)使用TCP協(xié)議實(shí)現(xiàn)可連續(xù)對(duì)話的服務(wù)端示例代碼:
import socket # 服務(wù)器配置 HOST = 'localhost' PORT = 12345 # 創(chuàng)建TCP套接字并綁定到地址和端口 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind((HOST, PORT)) # 監(jiān)聽(tīng)連接 server_socket.listen() # 接受連接并與客戶(hù)端建立通信 client_socket, client_address = server_socket.accept() print(f"與客戶(hù)端 {client_address} 建立連接。") while True: # 接收客戶(hù)端傳來(lái)的消息 data = client_socket.recv(1024) print(f"來(lái)自{client_address}的消息:{data.decode('utf-8')}") if not data: # 如果客戶(hù)端關(guān)閉了連接,則退出循環(huán) break # 獲取用戶(hù)輸入 message = input("請(qǐng)輸入要發(fā)送的消息:") # 發(fā)送消息到客戶(hù)端 client_socket.sendall(message.encode("uft-8")) # 關(guān)閉套接字 client_socket.close() server_socket.close()
在這個(gè)示例中,我們首先創(chuàng)建了一個(gè)TCP套接字,并將其綁定到指定的地址和端口。然后,我們通過(guò)listen()
函數(shù)開(kāi)始監(jiān)聽(tīng)客戶(hù)端連接請(qǐng)求。
當(dāng)有客戶(hù)端連接時(shí),我們調(diào)用accept()
函數(shù)接受連接并返回客戶(hù)端套接字和地址。然后,我們通過(guò)循環(huán)不斷接收和發(fā)送數(shù)據(jù),從而實(shí)現(xiàn)了可連續(xù)對(duì)話的功能。
請(qǐng)注意,由于TCP是面向連接的協(xié)議,因此我們可以通過(guò)該連接保證消息的可靠性和順序性。最后,我們通過(guò)close()
函數(shù)關(guān)閉套接字。
需要注意的是,在實(shí)際開(kāi)發(fā)中,我們可能需要為每個(gè)連接創(chuàng)建一個(gè)新的線程或進(jìn)程,以便能夠同時(shí)處理多個(gè)客戶(hù)端連接。
以上就是python日記(使用TCP實(shí)現(xiàn)的對(duì)話客戶(hù)端和服務(wù)器)的詳細(xì)內(nèi)容,更多關(guān)于python TCP對(duì)話客戶(hù)端服務(wù)器的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python點(diǎn)擊鼠標(biāo)獲取坐標(biāo)(Graphics)
這篇文章主要為大家詳細(xì)介紹了python點(diǎn)擊鼠標(biāo)獲取坐標(biāo),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08解決python問(wèn)題 Traceback (most recent call&n
這篇文章主要介紹了解決python問(wèn)題 Traceback (most recent call last),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12Python學(xué)習(xí)之集合的常用方法總結(jié)
集合并不是一種數(shù)據(jù)處理類(lèi)型,而是一種中間類(lèi)型。集合(set)是一個(gè)無(wú)序、不重復(fù)的元素序列,經(jīng)常被用來(lái)處理兩個(gè)列表進(jìn)行交并差的處理性。本文將詳細(xì)講解集合的一些常用方法,感興趣的可以了解一下2022-03-03Python人工智能語(yǔ)音合成實(shí)現(xiàn)案例詳解
這篇文章主要為大家介紹了Python人工智能語(yǔ)音合成實(shí)現(xiàn)案例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03Python實(shí)現(xiàn)自動(dòng)上京東搶手機(jī)
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)自動(dòng)上京東搶手機(jī)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02selenium WebDriverWait類(lèi)等待機(jī)制的實(shí)現(xiàn)
這篇文章主要介紹了selenium WebDriverWait類(lèi)等待機(jī)制的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03python機(jī)器學(xué)習(xí)實(shí)現(xiàn)oneR算法(以鳶尾data為例)
本文主要介紹了python機(jī)器學(xué)習(xí)實(shí)現(xiàn)oneR算法(以鳶尾data為例),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03對(duì)Python中GIL(全局解釋器鎖)的一點(diǎn)理解淺析
首先需要明確的一點(diǎn)是GIL并不是Python的特性,它是在實(shí)現(xiàn)Python解析器(CPython)時(shí)所引入的一個(gè)概念,下面這篇文章主要給大家介紹了關(guān)于對(duì)Python中GIL的一點(diǎn)理解,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05