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...