python日記(使用TCP實(shí)現(xiàn)的對(duì)話客戶端和服務(wù)器)
TCP 客戶端
一個(gè)使用TCP協(xié)議實(shí)現(xiàn)可連續(xù)對(duì)話的客戶端示例代碼:
import socket
# 客戶端配置
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:
# 獲取用戶輸入
message = input("請(qǐng)輸入要發(fā)送的消息:")
# 發(fā)送消息到服務(wù)器
client_socket.sendall(message.encode("utf-8"))
# 接收服務(wù)器傳回的消息
data = client_socket.recv(1024)
print(f"收到來自服務(wù)器的消息:{data.decode('utf-8')}")
# 關(guān)閉套接字
client_socket.close()
在這個(gè)示例中,我們首先創(chuàng)建了一個(gè)TCP套接字,并使用connect()函數(shù)連接到指定的服務(wù)器地址和端口。然后,我們通過用戶輸入不斷發(fā)送消息到服務(wù)器,并等待服務(wù)器響應(yīng)并顯示其結(jié)果。請(qǐng)注意,由于TCP是面向連接的協(xié)議,因此我們可以通過該連接保證消息的可靠性和順序性。
最后,我們通過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)聽連接
server_socket.listen()
# 接受連接并與客戶端建立通信
client_socket, client_address = server_socket.accept()
print(f"與客戶端 {client_address} 建立連接。")
while True:
# 接收客戶端傳來的消息
data = client_socket.recv(1024)
print(f"來自{client_address}的消息:{data.decode('utf-8')}")
if not data: # 如果客戶端關(guān)閉了連接,則退出循環(huán)
break
# 獲取用戶輸入
message = input("請(qǐng)輸入要發(fā)送的消息:")
# 發(fā)送消息到客戶端
client_socket.sendall(message.encode("uft-8"))
# 關(guān)閉套接字
client_socket.close()
server_socket.close()
在這個(gè)示例中,我們首先創(chuàng)建了一個(gè)TCP套接字,并將其綁定到指定的地址和端口。然后,我們通過listen()函數(shù)開始監(jiān)聽客戶端連接請(qǐng)求。
當(dāng)有客戶端連接時(shí),我們調(diào)用accept()函數(shù)接受連接并返回客戶端套接字和地址。然后,我們通過循環(huán)不斷接收和發(fā)送數(shù)據(jù),從而實(shí)現(xiàn)了可連續(xù)對(duì)話的功能。
請(qǐng)注意,由于TCP是面向連接的協(xié)議,因此我們可以通過該連接保證消息的可靠性和順序性。最后,我們通過close()函數(shù)關(guān)閉套接字。
需要注意的是,在實(shí)際開發(fā)中,我們可能需要為每個(gè)連接創(chuàng)建一個(gè)新的線程或進(jìn)程,以便能夠同時(shí)處理多個(gè)客戶端連接。
以上就是python日記(使用TCP實(shí)現(xiàn)的對(duì)話客戶端和服務(wù)器)的詳細(xì)內(nèi)容,更多關(guān)于python TCP對(duì)話客戶端服務(wù)器的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python如何將.tif格式圖批量轉(zhuǎn)化為.jpg格式圖
這篇文章主要介紹了python如何將.tif格式圖批量轉(zhuǎn)化為.jpg格式圖問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
redis之django-redis的簡(jiǎn)單緩存使用
本篇文章介紹了redis之django-redis的簡(jiǎn)單緩存使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06
Python查看Tensor尺寸及查看數(shù)據(jù)類型的實(shí)現(xiàn)
這篇文章主要介紹了Python查看Tensor尺寸及查看數(shù)據(jù)類型的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
詳解Python和Rust中內(nèi)存管理機(jī)制的實(shí)現(xiàn)與對(duì)比
Python和Rust都采用了垃圾收集(Garbage?Collection)機(jī)制來管理內(nèi)存,但它們各自的實(shí)現(xiàn)方式有很大的不同,下面就跟隨小編一起來深入了解下二者的區(qū)別吧2024-03-03
yolov5中anchors設(shè)置實(shí)例詳解
在YOLOV5算法之中,針對(duì)不同的數(shù)據(jù)集,一般會(huì)預(yù)先設(shè)置固定的Anchor,下面這篇文章主要給大家介紹了關(guān)于yolov5中anchors設(shè)置的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06
python使用matplotlib:subplot繪制多個(gè)子圖的示例
python paramiko連接ssh實(shí)現(xiàn)命令

