Python TCP通信客戶端服務(wù)端代碼實(shí)例
這篇文章主要介紹了Python TCP通信客戶端服務(wù)端代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
TCP客戶端:
import argparse, socket,sys
import time
# socket.setdefaulttimeout(20)
def recvall(sock, length):
data = b''
while len(data) < length:
more = sock.recv(length - len(data))
if not more:
raise EOFError('總共有%dbytes,但只收到了%dbytes' % (length, len(data)))
data += more
return data
if __name__ == '__main__':
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('192.168.137.1', 10000))
print('客戶的分配了socket:', sock.getsockname())
i=0
for x in range(4):
# try:
text = '我是客戶端你是服務(wù)器嚯嚯嚯!'.encode('utf-8')
i=i+len(text)
sock.sendall(text)
sys.stdout.flush()
print("已發(fā)送:",i)
# except ConnectionResetError:
# pass
sock.shutdown(socket.SHUT_WR)
num = 0
while True:
reply = sock.recv(48) # b'Farewell, client'的長度
num += len(reply)
print('接收:',num)
if not reply:
print("ok")
break
# print('服務(wù)器返回:', reply.decode('utf-8'))
print("理論上應(yīng)該關(guān)閉sock")
sock.close()
time.sleep(1)
TCP服務(wù)端:
import argparse, socket,sys
def recvall(sock, length):
data = b''
while len(data) < length:
more = sock.recv(length - len(data))
if not more:
raise EOFError('總共有%dbytes,但只收到了%dbytes' % (length, len(data)))
data += more
return data
if __name__ == '__main__':
sc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sc.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sc.bind(('', 10000))
sc.listen()
print('正在偵聽{}...'.format(sc.getsockname()))
num = 0
while True:
scc, address = sc.accept()
print('連接來自:', address)
print('socket名字:', scc.getsockname())
print('socket peer:', scc.getpeername())
while True:
message = scc.recv(42)#recvall(scc, 24) # 嘗試 12,,20,28會是什么結(jié)果
if not message:
break
# print('收到16-octet消息:', repr(message))
print('收到16-octet消息:', (message.decode('utf-8')))
scc.sendall(message)
sys.stdout.flush()
num += len(message)
print("已發(fā)送:",num)
scc.close()
print('應(yīng)答發(fā)送,socket關(guān)閉')
sc.close()
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python微服務(wù)開發(fā)之使用FastAPI構(gòu)建高效API
微服務(wù)架構(gòu)在現(xiàn)代軟件開發(fā)中日益普及,它將復(fù)雜的應(yīng)用程序拆分成多個可獨(dú)立部署的小型服務(wù)。本文將介紹如何使用 Python 的 FastAPI 庫快速構(gòu)建和部署微服務(wù),感興趣的可以了解一下2023-05-05
使用Python實(shí)現(xiàn)VPN搭建的流程步驟
VPN(虛擬私人網(wǎng)絡(luò))是一種有效的解決方案,可以幫助我們在網(wǎng)絡(luò)上匿名瀏覽,保護(hù)數(shù)據(jù)傳輸?shù)陌踩?雖然市面上有許多商業(yè)VPN服務(wù),但你也可以通過Python自己搭建一個簡單的VPN,本文將介紹如何用Python建立自己的VPN,需要的朋友可以參考下2024-06-06
基于Python?OpenCV和?dlib實(shí)現(xiàn)眨眼檢測
這篇文章主要介紹了基于Python?OPenCV及dlib實(shí)現(xiàn)檢測視頻流中的眨眼次數(shù)。文中的代碼對我們的學(xué)習(xí)和工作有一定價值,感興趣的同學(xué)可以參考一下2021-12-12
Pytorch實(shí)現(xiàn)常用乘法算子TensorRT的示例代碼
pytorch 用于訓(xùn)練,TensorRT用于推理是很多AI應(yīng)用開發(fā)的標(biāo)配。大家往往更加熟悉 pytorch 的算子,而不太熟悉TensorRT的算子。本文介紹了Pytorch中常用乘法的TensorRT實(shí)現(xiàn),感興趣的可以了解一下2022-06-06
Python中的命名元組簡單而強(qiáng)大的數(shù)據(jù)結(jié)構(gòu)示例詳解
namedtuple是Python中一個非常有用的數(shù)據(jù)結(jié)構(gòu),它提供了一種簡單的方式創(chuàng)建具有固定字段的輕量級對象,通過使用namedtuple,可以提高代碼的可讀性和可維護(hù)性,避免了使用類定義對象的復(fù)雜性,這篇文章主要介紹了Python中的命名元組簡單而強(qiáng)大的數(shù)據(jù)結(jié)構(gòu),需要的朋友可以參考下2024-05-05
Python基于win32ui模塊創(chuàng)建彈出式菜單示例
這篇文章主要介紹了Python基于win32ui模塊創(chuàng)建彈出式菜單,結(jié)合實(shí)例形式分析了Python使用win32ui模塊創(chuàng)建彈出式菜單的具體步驟與相關(guān)操作技巧,并附帶說明了win32ui模塊的安裝命令,需要的朋友可以參考下2018-05-05
python tkinter GUI繪制,以及點(diǎn)擊更新顯示圖片代碼
這篇文章主要介紹了python tkinter GUI繪制,以及點(diǎn)擊更新顯示圖片代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
使用matplotlib創(chuàng)建Gif動圖的實(shí)現(xiàn)
本文主要介紹了使用matplotlib創(chuàng)建Gif動圖的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04

