基於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報...