一、一些概念
1、Socket是連接配接應用程式與網絡驅動程式的橋梁,Socket在應用程式中建立,通過綁定操作與驅動程式建立關系。
網絡體系結構就是使用這些用不同媒介連接配接起來的不同裝置和網絡系統在不同的應用環境下實作互操作性,并滿足各種業務需求的一種粘合劑。網絡體系結構解決互質性問題彩是分層方法。
網絡的7層:
應用層--->為應用程式提供網絡通信服務
表示層--->資料表示
會話層--->主機間通信(兩個應用程序間)
傳輸層--->端到端的連接配接,隔離網絡的上下層協定,使得網絡應用與下層協定無關
網絡層--->尋找最優路徑,轉發資料包
資料鍊路層--->無差錯的鍊路連接配接
實體層--->二進制傳輸
2、端口
是一種抽象的軟體結構,包括一些資料結構和I/O緩沖區。與協定有關。
3、套接字存在于通信區域中。通信區域也叫位址族,它是一個抽象的概念,主要用于将通過套接字通信的程序的共有特性綜合在一起。
為保證資料的正确性,在網絡協定中需要制定網絡位元組順序,采用統一的網絡位元組順序。
二、socket的連接配接方式
1、基于TCP的
伺服器端程式:
1)加載套接字庫
2)建立套接字(socket)。
3)将套接字綁定到一個本地位址和端口上(bind)。
4)将套接字設為監聽模式,準備接收客戶請求(listen)。
5)等待客戶請求到來;當請求到來後,接受連接配接請求,傳回一個新的對應于此次連接配接的套接字(accept)。
6)用傳回的套接字和用戶端進行通信(send/recv)。
7)傳回,等待另一客戶請求。
8)關閉套接字。
用戶端程式:
3)向伺服器發出連接配接請求(connect)。
4)和伺服器端進行通信(send/recv)。
5)關閉套接字。
伺服器端調用accept函數時會等待,連接配接。
客客端調用connect函數時,發出連接配接請求,伺服器端接受,這樣雙方就建立起了連接配接。
2、相關函數
(1)htonl把一個u_long類型從主機位元組序轉換為網絡位元組序
(2)htons把一個u_short類型從主機位元組序轉換為網絡位元組序(2Bytes)
WSAStartup把其加載的苦版本的有關資訊添在這個結構中對于每一個WSAStartup的成功調用,最後都應該調用WSACleanUp以便釋放資源如果調用成功,将傳回套接字描述符。如果調用失敗,将傳回INVALID_SOCKET,錯誤資訊可通過WSAGetLastError傳回。
inet_ntoa:The Windows Sockets inet_ntoa function converts an (Ipv4) Internet network address into
a string in Internet standard dotted format.
net_addr:The Windows Sockets inet_addr function converts a string containing an (Ipv4) Internet
Protocol dotted address into a proper address for the IN_ADDR structure.
三、例程:
伺服器端:
參考
[1]孫鑫的《VC++深入》
[2] 對于socket,講得非常好
<a href="http://www.cnblogs.com/goodcandle/archive/2005/12/10/socket.html#2025579">http://www.cnblogs.com/goodcandle/archive/2005/12/10/socket.html#2025579</a>