天天看點

用python實作socket程式設計

1,socket的定義: Socket的英文原義是“孔”或“插座”,網絡上的兩個程式通過一個雙向的通信連接配接實作資料的交換,這個連接配接的一端稱為一個socket;

建立網絡通信連接配接至少要一對端口号(socket),socket本質是程式設計接口(API),對TCP/IP的封裝,TCP/IP也要提供可供程式員做網絡開發所用的接口,這就是Socket程式設計接口;HTTP是轎車,提供了封裝或者顯示資料的具體形式;Socket是發動機,提供了網絡通信的能力;

套接字:源IP位址和目的IP位址以及源端口号和目的端口号的組合稱為套接字;其用于辨別用戶端請求的伺服器和服務;

用python實作socket程式設計

2,python編寫socket的步驟; 1) 建立socket對象,調用socket構造函數: socket = socket.socket( family, type ) 2) 将socket綁定到指定位址 socket.bind( address ) 3) 使用socket套接字的listen方法接收連接配接請求 socket.listen( backlog ) 4) 伺服器套接字通過socket的accept方法等待客戶請求一個連接配接 connection, address = socket.accept() 5) 處理階段,伺服器和用戶端通過send和recv方法通信(傳輸 資料) send--發送資訊, recv--接收資料; 6) 傳輸結束,伺服器調用socket的close方法關閉連接配接;

3,python編寫client的步驟: 1) 建立一個socket以連接配接伺服器: socket = socket.socket( family, type ) 2) 使用socket的connect方法連接配接伺服器 socket.connect( (host,port) ) 3) 處理階段,客戶和伺服器将通過send方法和recv方法通信; 4) 傳輸結束,客戶通過調用socket的close方法關閉連接配接;

4,服務端代碼: #_*_ coding:utf-8 _*_ #服務端 #導入socket子產品 import socket #建立TCP類型的socket host = '127.0.0.1' port = 8997 *端口号每連接配接一次換一個連就ok了! #建立一個socket對象,AF_INET說明将使用标準的IPv4位址,SOCK_STREAM說明是一個TCP用戶端 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind((host, port)) s.listen(2) conn,addr= s.accept()#建立socket和用戶端通信; while 1: print "Connected by",addr conn.sendall("yes sir") print conn.recv(1024) conn.close() # conn.sendall('reply')

用python實作socket程式設計

5,用戶端代碼: #_*_ coding:utf-8 _*_ #用戶端 #導入socket子產品 import socket #建立TCP類型的socket c = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #建立到指定IP位址,端口的TCP連接配接 c.connect(('127.0.0.1', 8997)) *端口号每連接配接一次換一個連就ok了! while 1: data = raw_input("please go out!:") c.send(data)#發送資料 result = c.recv(1024)#接受的結果傳給result print result #輸出接受到的結果 #關閉連接配接 c.close()

用python實作socket程式設計

如需了解更多測試技術資訊請關注: 深圳市多測師資訊技術有限公司