TCP網路設計

2021-09-02 23:24:34 字數 2646 閱讀 4293

基於tcp-伺服器

建立乙個socket,用函式socket()

繫結ip位址、埠等資訊到socket上,用函式bind()

設定允許的最大連線數,用函式listen()

等待來自客戶端的連線請求,用函式accept()

收發資料,用函式send()和recv(),或者read()和write()

關閉網路連線

**

#include #include #include #include #include #include #include #include #define portnumber 3333

int main(int argc, char *argv)

/* 伺服器端填充 sockaddr結構 */

bzero(&server_addr,sizeof(struct sockaddr_in)); // 初始化,置0

server_addr.sin_family=af_inet; // internet

server_addr.sin_addr.s_addr=htonl(inaddr_any); // (將本機器上的long資料轉化為網路上的long資料)和任何主機通訊 //inaddr_any 表示可以接收任意ip位址的資料,即繫結到所有的ip

//server_addr.sin_addr.s_addr=inet_addr("192.168.1.1"); //用於繫結到乙個固定ip,inet_addr用於把數字加格式的ip轉化為整形ip

server_addr.sin_port=htons(portnumber); // (將本機器上的short資料轉化為網路上的short資料)埠號

/* **sockfd描述符到ip位址 */

if(bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1)

/* 設定允許連線的最大客戶端數 */

if(listen(sockfd,5)==-1)

while(1)

fprintf(stderr,"server get connection from %s\n",inet_ntoa(client_addr.sin_addr)); // 將網路位址轉換成.字串

if((nbytes=read(new_fd,buffer,1024))==-1)

buffer[nbytes]='\0';

printf("server received %s\n",buffer);

/* 這個通訊已經結束 */

close(new_fd);

/* 迴圈下乙個 */

} /* 結束通訊 */

close(sockfd);

exit(0);

}

基於tcp-客戶端建立乙個socket,用函式socket()

設定要連線的伺服器的ip位址和埠等屬性

連線伺服器,用函式connect()

收發資料,用函式send()和recv(),或者read()和write()

關閉網路連線

#include #include #include #include #include #include #include #include #define portnumber 3333

int main(int argc, char *argv)

if((host=gethostbyname(argv[1]))==null)

/* 客戶程式開始建立 sockfd描述符 */

if((sockfd=socket(af_inet,sock_stream,0))==-1) // af_inet:internet;sock_stream:tcp

/* 客戶程式填充服務端的資料 */

bzero(&server_addr,sizeof(server_addr)); // 初始化,置0

server_addr.sin_family=af_inet; // ipv4

server_addr.sin_port=htons(portnumber); // (將本機器上的short資料轉化為網路上的short資料)埠號

server_addr.sin_addr=*((struct in_addr *)host->h_addr); // ip位址

/* 客戶程式發起連線請求 */

if(connect(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1)

/* 連線成功了 */

printf("please input char:\n");

/* 傳送資料 */

fgets(buffer,1024,stdin);

write(sockfd,buffer,strlen(buffer));

/* 結束通訊 */

TCP網路程式設計

基於tcp 通訊模型 由上圖可以得出tcp通訊的步驟如下 服務端 1 建立乙個socket,用函式socket 2 繫結ip位址 埠等資訊到socket上,用函式bind 3 設定允許的最大連線數,用函式listen 4 等待來著客戶端的連線請求,用函式accept 5 收發資料,用函式send 和...

網路程式設計 TCP

客戶端 1.建立客戶端的socket服務,指定目的主機和埠 2.為了傳送資料,應該獲取socket中的輸出流 3.獲取socket中的輸入流來獲取服務端的反饋資料 4.關閉資源 服務端 1.建立服務端的serversocket服務,並監聽乙個埠 2.通過accept方法 等待並獲取連線過來的客戶端s...

網路程式設計 TCP

即有傳送緩衝區 接收緩衝區,傳送次數和接收次數不一定對等。報頭長,成本高,需要搭載更多的資料。1.三次握手 通過對ack的確認,建立可靠連線。有超時重傳機制 2.四次揮手 有可能伺服器處理資料的時間較短,即三次揮手 3.狀態圖 2 保證遲來的資料報能被識別並丟棄 4.tcp狀態轉移過程 5.tcp報...