網絡編程----網絡編程概述[1]

1.Socket Api 版本:

在Windows平臺上主要有兩個版本的Socket Api函數:

WinSock 1.1 和 WinSock 2.2,2.2版本默認兼容1.1版本,

1.1 winsock.h wsock32.lib winsock.dll

2.2 winsock2.h ws2_32.lib ws2_32.dll

 

2.0版本的Socket比1.1的多了一些高級的功能,如:

多重協議支持:通過SPI接口支持其他協議;

多重命名空間:根據服務與主機名選擇協議;

重疊I/O模式:增強I/O吞吐量與提高性能;

分散與聚合:從多個緩衝區發送與接收數據;

有條件接受:有選擇性地決定是否接受連接;

套接字共享:多個進程共享一個套接字句柄。

 

一般大家看到的WSA開頭的都是WinSock2.2新增的函數。

2.Socket套接字類型:

比較常用的包括:流式套接字(使用TCP),數據報套接字(使用UDP),原始套接字等等。

TCP與UDP各有優缺點:

TCP:面向連接、穩定、需要資源多;

UDP:面向無連接(一般情況下)、不穩定、需要資源少。

 

用手機打電話時面向連接的,用手機發短信是面向無連接的,目前來說網絡上比較常用的是TCP類型的套接字。

本教程中也使用TCP Socket類型。

 

TCP與UDP的區別

  1. 基於連接與無連接
  2. 對系統資源的要求(TCP較多,UDP少)
  3. UDP程序結構較簡單
  4. 流模式(TCP)與數據報模式(UDP)
    TCP保證數據正確性,UDP可能丟包
    TCP保證數據順序,UDP不保證

具體編程時的區別

  1. socket()的參數不同
  2. UDP Server不需要調用listen和accept
  3. UDP收發數據用sendto/recvfrom函數
  4. TCP:地址信息在connect/accept時確定
    UDP:在sendto/recvfrom函數中每次均 需指定地址信息
  5. UDP:shutdown函數無效

部分滿足以下幾點要求時,應該採用UDP 面向數據報方式

  1. 網絡數據大多爲短消息
  2. 擁有大量Client
  3. 對數據安全性無特殊要求
  4. 網絡負擔非常重,但對響應速度要求高

 

TCP Socket通信流程:

TCP是面向連接的,UDP是面向無連接的。

3.TCP 類型 Socket 程序開發流程:

TCP服務端:WSASartup、socket、bind、listen、accept、read、write、closesocket、WSACleanup。

TCP客戶端:WSASartup、socket、connect、read、write、closesocket、WSACleanup。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章