1. 程式人生 > 實用技巧 >python基礎—socket套接字(3),tcp和udp協議

python基礎—socket套接字(3),tcp和udp協議

前面的socket例項化,沒有輸入引數,採用的預設引數

socket_obj = socket.socket(socket_obj = socket.socket() 
#預設family=AF_INET, type=SOCK_STREAM)
1.SOCK_STREAM資料流,tcp協議,使用時候,客戶端需要connect,服務端需要accept,建立連結生成新的物件,在物件內進行recv,
send收發訊息。底層採用了Nagle演算法,把短時間內多次資料量小的資料,合併成一個數據,然後封包,容易產生粘包問題,一次沒接收乾淨的資料,會
在下次接收繼續傳過來;客戶端斷開會拋異常;正常情況下,不能收空
2.SOCK_DGRAM資料包,udp協議,使用recvfrom和sendto收發訊息。每個包都又頭。即使輸入空,udp協議也會幫你封裝上頭;
沒接收乾淨的資料會丟失。客戶端斷開不會拋異常;可收空
# 服務端
import socket

socket_obj = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
socket_obj.bind(('127.0.0.1', 8080))
data = socket_obj.recvfrom(1024)
print(data[0].decode('utf8'))
# 服務端
import socket

socket_obj = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
socket_obj.sendto('from udp'.encode('
utf8'), ('127.0.0.1', 8080))