Python TCP程式設計

2021-08-26 05:38:13 字數 2247 閱讀 4999

tcp

對於tcp,我想大部分同學不會陌生。tcp是乙個網路層協議,通過tcp可以建立客戶端到伺服器的連線,並相互傳遞資料。那麼在python中如何使用tcp來做一些操作呢?

socket

socket在網路程式設計中,是乙個抽象概念。我們用socket來表示開啟了乙個從客戶端到伺服器或者從伺服器到客戶端的連線。

python中使用socket程式設計

服務端

import threading

deftransaction

(socket, address):

print('connect %s:%s' % address)

socket.send(b'welcome!')

while

true:

data = socket.recv(1024)

ifnot data or data.decode('utf-8') == 'exit':

break

socket.send(('hello %s' % data.decode('utf-8')).encode('utf-8'))

socket.close()

defmain

():import socket

server = socket.socket(socket.af_inet, socket.sock_stream)

server.bind(('127.0.0.1', 1234))

server.listen(10)

print('waiting for connect...')

while

true:

socket, address = server.accept()

worker = threading.thread(target=transaction, args=(socket, address))

worker.start()

main()

通過上面的**,我們成功編寫了乙個服務端程式。我們可以做如下總結:

1.通過匯入socket模組,我們可以利用到socket模組進行socket程式設計

2.通過socket.socket方法,我們可以指定該tcp連線所使用的ip型別,上述**中,使用的ipv4,如果需要使用ipv6,則需要使用socket.af_inet6來作為第乙個引數,其中第二個引數指定了socket用於通訊的格式,這裡是面向流

3.通過bind方法,我們可以講宣告好的socket物件繫結到指定ip和指定埠上,乍一看裡面的引數可能會有點奇怪,其實就是個tuple,按ip、埠的順序傳遞了引數

4.在通過listen方法限定等待連線的數量,當然,也可以不傳引數

5.通過accept方法,等待接收連線

6.通過recv方法來接收傳遞的資料,同時可以限制一次性接收資料的多少,以上設定為1024

7.通過send方法來傳送訊息,我們可以注意到,傳遞的資料為二進位制格式

8.在完成操作後,呼叫了close方法來關閉連線

客戶端
import socket

import threading

import time

defmain

(): client = socket.socket(socket.af_inet, socket.sock_stream)

client.connect(('127.0.0.1', 1234))

print(client.recv(1024).decode('utf-8'))

connect(client)

client.close()

defconnect

(client):

for data in [b'sherlock', b'blaze']:

client.send(data)

print(client.recv(1024).decode('utf-8'))

time.sleep(2)

main()

上面的**,似乎沒什麼更多的內容可以總結了,除了呼叫了connect方法,傳入了 ip、port 的引數元組來連線伺服器之外。

Python tcp程式設計

1 客戶端 coding utf 8 udp穩定性不好,tcp對包有檢查建立通道 建立連線 上傳流量以部分是上傳的應答 這之中還包括超時重傳,錯誤校驗,流量控制和阻塞管理。檔案分塊傳輸 import socket def main 1.建立tcp的套接字 tcp socket socket.sock...

python TCP程式設計再試牛刀

該示例演示的是c s服務模型,server端接收來自客戶端的請求,然後只是很簡單地給客戶端返回 hello 來自客戶端的原文。核心在於兩端socket的建立和連線以及資料的傳送和接收。server端 server.py coding utf 8 created on 2016年8月3日 author...

Python TCP與UDP程式設計

socket是網路程式設計的乙個抽象概念。通常我們用乙個socket表示 開啟了乙個網路鏈結 而開啟乙個socket需要知道目標計算機的ip位址和埠號,再指定協議型別即可。操作步驟建立socket 建立連線 接收服務端資料 傳送資料 斷開連線 客戶端 import socket s socket.s...