1. 程式人生 > >十五、python開發之網絡通信socket

十五、python開發之網絡通信socket

bin PE 本機 線程 seq read sock_raw get HR

一、客戶端: 1、導入socket庫 import socket 2、指定協議類型 client = socket.socket( ) #不填默認是socket.AF_INET,socket.SOCK_STREAM) 協議類型有:
socket 類型 描述
socket.AF_UNIX 用於同一臺機器上的進程通信(既本機通信)
socket.AF_INET 用於服務器與服務器之間的網絡通信IPV4方式
socket.AF_INET6 基於IPV6方式的服務器與服務器之間的網絡通信
socket.SOCK_STREAM 基於TCP的流式socket通信
socket.SOCK_DGRAM 基於UDP的數據報式socket通信
socket.SOCK_RAW 原始套接字,普通的套接字無法處理ICMP、IGMP等網絡報文,而SOCK_RAW可以;其次SOCK_RAW也可以處理特殊的IPV4報文;此外,利用原始套接字,可以通過IP_HDRINCL套接字選項由用戶構造IP頭
socket.SOCK_SEQPACKET 可靠的連續數據包服務
3、連接服務器 client.connect((‘www.baidu.com‘,80)) #使用元組tuple的方式傳遞兩個參數 4、發送數據 client.send(b‘你好‘) #傳送的數據必須為字節的方式 5、接收數據 data = client.recv(1024) #每次接收1K數據,data為接收到的數據 6、關閉socket client.close() 二、服務器端: 1、選擇協議: server = socket.socket() 2、監聽端口: server.bind((‘localhost‘,80)) #使用元組tuple方式傳參 server.listen(3) #監聽端口,並設置最大等待連接數 3、等待客戶端連接: while True: conn,addr = server.accept() #接收新連接 t = threading.Thread(target = tcplink,args=(conn,addr)) #創建新線程處理tcp連接 t.start() 4、與客戶端數據交互 while True: data = conn.recv(1024) #接收1kb數據 conn.send(data.upper()) #將客戶端的數據小寫變大寫傳回去

十五、python開發之網絡通信socket