1.建立tcp通訊socket函式介面
int socket(int domain ,int type ,int protocol);
引數一 :網路層協議 af_inet ipv4 internet protocols
引數二 :傳輸層協議 sock_stream 資料流 tcp
sock_dgram 資料報 dup
引數三 :屬性 預設為 0
return value :成功返回 new socket ( 新的網路檔案描述符) 失敗返回 error -1
2.設定伺服器資訊
#include 伺服器資訊結構體標頭檔案
在linux終端環境下檢視伺服器資訊結構體 命令 :gedit /usr/include/linux/in.h
/* structure describing an internet (ip) socket address. */
結構體描述乙個網路的socket位址
struct sockaddr_in
/*/網路ip位址/
struct in_addr ;
---------------ip位址轉換函式--------------
#include #include #include in_addr_t inet_addr(const char *cp); //把字串型別的ip位址轉換成整形
char *inet_ntoa(struct in_addr in); //把整形的ip位址轉換成字串型別
ip位址一般形式是字串,需要成整形計算機識別
-----------大小端的轉換---------------
注意:網路通訊都是使用大端格式通訊的,目的是為了資料的完整性
#include
uint16_t htons(uint16_t hostshort); //本地序 -》 網路序
uint16_t ntohs(uint16_t netshort);//網路序 -》 本地序
3.鏈結到網路伺服器中
name
connect - initiate a connection on a socket
synopsis
#include /* see notes */
#include int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
返回值: 0 成功 -1 失敗
4.進行資料的讀寫 read/write
socket網路描述符和普通的網路描述副一樣,也可以進行讀寫操作,
當然,寫入的資訊是傳遞給另外乙個ip主機的,讀取則是接受其反饋資訊
從而利用讀寫操作進行通訊。
1)當讀取網路通訊描述符時沒有資料的話 讀 會阻塞
2)當寫不斷的往網路通訊描述符寫入資料沒有人去讀取資料時, 寫滿 則阻塞
3)當建立通訊後,某一方埠斷開鏈結,我們的讀操作就不會阻塞。
5.關閉通訊
1.建立tcp通訊socket
建立通訊socke獲取網路描述符和客戶端操作一樣
2.繫結本地網路中伺服器的資訊
#include /* see notes */
#include int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
引數一:需要繫結的伺服器socket
返回值:成功 0 失敗 -1
/* address to accept any incoming messages.*/
萬用ip位址,讓伺服器自動監聽並繫結本地網絡卡位址
ip位址設計0.0.0.0系統會自動檢測本地ip
#defineinaddr_any((unsigned long int) 0x00000000)
3.設定為監聽模式
把服務端設定為監聽模式,等待客服端鏈結資訊的來臨,並接受其資訊
#include /* see notes */
#include int listen(int sockfd, int backlog);
引數一:需要監聽服務socket
返回值: 成功 0 失敗 -1
4.接受對方的鏈結請求
(當沒有客戶端鏈結進來時accept或阻塞,直到到有客戶鏈結進來為止)
name
accept - accept a connection on a socket
synopsis
#include /* see notes */
#include int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
引數一:已經為監聽模式伺服器socket
引數三:成功儲存對方資訊的大小
返回值: 成功 accepted socket (接收客戶端網路描述符) 失敗 -1
這樣我們就搭建好客服端和服務端了,兩者之間經過三次握手就可以程序網路通訊了,值得我們注意的是,三次握手發生在connect 中。
Linux 網路程式設計 TCP
一 tcp通訊步驟 tcp伺服器部分 1 呼叫函式socket 建立乙個socket 2 設定sockaddr in資訊,如要連線伺服器的ip和埠等屬性 3 呼叫函式bind 繫結ip位址 埠等資訊到socket上 4 呼叫函式listen 設定允許的最大連線數 5 呼叫函式accept 等待來自客...
Linux 網路程式設計(TCP)
include include include include include include include include int main int argc,char argv bzero server addr,sizeof struct sockaddr in server addr.si...
linux網路程式設計 初探TCP
伺服器端等待客戶端連線,連線成功後,列印客戶端的ip和port,然後迴圈接收資料,緩衝區無資料就阻塞待待。include include include include include include include include include include define maxbuf 10 ...