協議就是指為了完成資料交換而定好的約定。
建立套接字使用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 在賦值語句中 是...