socket本質是程式設計介面(api),對tcp/ip的封裝,tcp/ip也要提供可供程式設計師做網路開發所用的介面,這就是socket程式設計介面;http是轎車,提供了封裝或者顯示資料的具體形式;socket是發動機,提供了網路通訊的能力。有三種不同形式的套接字:在internet上的主機一般執行了多個服務軟體,同時提供幾種服務。每種服務都開啟乙個socket,並繫結到乙個埠上,不同的埠對應於不同的服務。socket正如其英文原意那樣,像乙個多孔插座。一台主機猶如布滿各種插座的房間,每個插座有乙個編號,有的插座提供220伏交流電, 有的提供110伏交流電,有的則提供有線電視節目。 客戶軟體將插頭插到不同編號的插座,就可以得到不同的服務。—— [ 維基百科]
資料報套接字(sock_dgram)基於tcp的socket使用流式套接字,相比於使用資料報套接字的udp來講,tcp可以使程式設計師不必關心資料正確性及順序正確性,缺點是效率較低。原始套接字(sock_raw)
原始套接字(socket_raw)允許對較低層次的協議直接訪問,比如ip、 icmp協議,它常用於檢驗新的協議實現,或者訪問現有服務中配置的新裝置,因為raw socket可以自如地控制windows下的多種協議,能夠對網路底層的傳輸機制進行控制,所以可以應用原始套接字來操縱網路層和傳輸層應用。比如,我們可以通過raw socket來接收發向本機的icmp、igmp協議包,或者接收tcp/ip棧不能夠處理的ip包,也可以用來傳送一些自定包頭或自定協議的ip包。網路監聽技術很大程度上依賴於socket_raw
基於tcp的socket程式設計最常見的應用場景是在c/s架構下的分布式應用,針對客戶端和伺服器端提供不同的socket系統呼叫。
下面舉例說明其使用方式:
#include
#include
#pragma comment(lib,"ws2_32.lib")
void main()
#include
#include
#pragma comment(lib,"ws2_32.lib")
void main()
附socket程式設計步驟:
伺服器端程式設計的步驟:
1:載入套接字型檔,建立套接字(wsastartup()/socket());3:將套接字設定為監聽模式等待連線請求(listen());
4:請求到來後,接受連線請求,返回乙個新的對應於此次連線的套接字(accept());
5:用返回的套接字和客戶端進行通訊(send()/recv());
6:返回,等待另一連線請求;
7:關閉套接字,關閉載入的套接字型檔(closesocket()/wsacleanup())。
客戶端程式設計的步驟:
1:載入套接字型檔,建立套接字(wsastartup()/socket());
2:向伺服器發出連線請求(connect());
3:和伺服器端進行通訊(send()/recv());
4:關閉套接字,關閉載入的套接字型檔(closesocket()/wsacleanup())。
csdn部落格
C Socket程式設計例項解析
socket本質是程式設計介面 api 對tcp ip的封裝,tcp ip也要提供可供程式設計師做網路開發所用的介面,這就是socket程式設計介面 http是轎車,提供了封裝或者顯示資料的具體形式 socket是發動機,提供了網路通訊的能力。在internet上的主機一般執行了多個服務軟體,同時提...
C socket程式設計例項
include stdafx.h include pragma comment lib,ws2 32.lib define port number 11234 define max buf size 1024 int tmain int argc,tchar argv socket nsocket ...
C Socket 程式設計簡單例項
c console 程式設計 伺服器端 csharpconsolesokecttestserver.cs using system using system.collections.generic using system.text using system.net using system.net...