網路程式設計第二章總結 套接字型別和協議設定

2021-10-11 11:18:45 字數 1880 閱讀 3223

協議就是指為了完成資料交換而定好的約定。

建立套接字使用socket函式。

int

socket

(int domain,

int type,

int protocal)

;

domain:套接字使用的協議族資訊;type:套接字的資料傳輸型別;protocol:計算機通訊過程中使用的協議資訊。

常見的協議族有5種,eg:pf_inet(ipv4);pf_inet6(ipv6);pf_local(本地通訊的unix);pf_packet(底層套接字的協議族);pf_ipx(ipx novell協議族)。

套接字型別指的是套接字的資料傳輸方式。兩種具有代表性的資料傳輸方式:

套接字型別1:面向連線的套接字(sock_stream),特點:傳輸過程中資料不會消失;按序傳輸資料;傳輸的資料不存在資料邊界;套接字必須一一對應。接收資料的套接字內部有緩衝區,收到資料後不會馬上呼叫read接收資料,只要沒超過緩衝區的容量,就能接著繼續接受,可以等緩衝區滿後一次全部讀出,也可分幾次read進行讀取。

套接字型別2:面向訊息的套接字(sock_dgram),特點:強調快速傳輸;傳輸的資料可能丟失也可能會損毀;傳輸的資料有資料邊界;限制每次傳輸的資料大小。

第三個引數一般為0,除非:同一協議族中存在多個資料傳輸方式相同協議(傳輸方式相同,但協議不同)。

eg:ipv4協議族中面向連線的套接字:

int tcp_socket =

socket

(pf_inet, sock_stream, ipproto_tcp)

;//tcp套接字

ipv4協議族中面向訊息的套接字:

int udp_socket =

socket

(pf_inet, sock_dgram, ipproto_udp)

;//udp套接字

在windows和linux下**差不多,所以選擇其中展示乙個就行了。

客戶端**:

#include

#include

const

int length =30;

void

error_handling

(const

char

* message)

;int

main

(int argc,

char

* ar**)

std::cout <<

"message from server:"

<< message << std::endl;

std::cout <<

"read_time : "

<< strlen << std::endl;

closesocket

(tcp_socket)

;wsacleanup()

;return0;

}void

error_handling

(const

char

* message)

伺服器**:

#include

#include

void

error_handling

(const

char

* message)

;int

main

(int argc,

char

* ar**)

void

error_handling

(const

char

* message)

程式設計珠璣第二章總結

分析 如果記憶體足夠的話,可以採取第一章的點陣圖排序法,以o n 的效率就可以解決。如果記憶體不足的話,但是有幾個外部檔案可以儲存資料,那麼就可以採用二分查詢的思想來解決問題 這裡的思路比較巧妙,它不是通常意義上的二分查詢,但是思維模式很相似.我們可以通過掃瞄輸入檔案,將第一位是0的寫入乙個檔案,將...

第二章 T SQL程式設計 總結

go是批處理的標誌,表示sql server將這些t sql語句編譯為乙個執行單元,提高執行效率 sql server規定 如果是建庫語句 建表語句,則必須在語句末尾新增go批處理標誌 區域性變數 區域性變數必須以標記 作為字首,如 age 區域性變數的使用時先宣告,再賦值 區域性變數只在定義它的區...

第二章總結

學了c 後,我對第二章做出了總結,了解了以下幾點 1 cin語句,cout語句的使用 2 資料型別和他們各自的資料範圍及程式設計應用 3 定義常量與變數的格式及它們的含義 4 字元變數的運算和getchar,putchar的使用 5 算數運算子的含義,在實際問題程式設計中的應用 6 在賦值語句中 是...