Socket,套接字就是兩臺主機之間邏輯連線的端點,其屬於TCP/IP協議中的傳輸層協議,主要解決資料如何在網路中傳輸。而HTTP是應用層協議,主要解決如何包裝資料(資料的格式化)。
Socket是通訊的基石,是支援TCP/IP協議的網路通訊的基本操作單元。它是網路通訊過程中端點的抽象表示,包含進行網路通訊必須的五種資訊:
1)連線使用的協議(TCP、UDP)
2)本地主機的IP地址
3)本地程序的協議埠
4)遠端主機的IP地址
5)遠端程序的協議埠。
Socket整體流程如下圖:
具體程式設計步驟如下:
伺服器端程式設計的步驟:
1:載入套接字型檔,建立套接字(WSAStartup()/socket());
2:繫結套接字到一個IP地址和一個埠上(bind());
3:將套接字設定為監聽模式等待連線請求(listen());
4:請求到來後,接受連線請求,返回一個新的對應於此次連線的套接字(accept());
5:用返回的套接字和客戶端進行通訊(send()/recv());
6:返回,等待另一連線請求;
7:關閉套接字,關閉載入的套接字型檔(closesocket()/WSACleanup())。
客戶端程式設計的步驟:
1:載入套接字型檔,建立套接字(WSAStartup()/socket());
2:向伺服器發出連線請求(connect());
3:與伺服器端進行通訊(send()/recv());
4:關閉套接字,關閉載入的套接字型檔(closesocket()/WSACleanup())。
示例程式碼如下:
客戶端:
服務端:
測試結果: