伺服器與客戶端的概念:
伺服器: 在一次通訊中,提供資料的為伺服器
客戶端: 在一次通訊中,獲取資料的為客戶端
協議的選擇(兩種不同的協議有兩種不同的程式設計方式):
tcp: 面向連線的(不斷傳送資料)可靠的(資料完整,例如銀行交易往來資料)流式服務
關於tcp 的程式設計流程:
server: socket(開啟網路介面)bind(將伺服器的ip位址與埠號與socket繫結)listen(監聽連線)accept(拿出乙個連線)recv/send(收發資料)close(關閉連線)
client: socket /*bind*/(可要可不要)connect(發起連線)recv/send close
int socket(int domain, int type, int protocol);
domain:: 協議簇 af_inet
type:: 選擇協議 sock_stream(tcp) sock_dgram(udp)
protocol:: 0
int bind(int sockfd, struct sockaddr *addr, int addrlen);
addr:: 指定 ip 位址和埠號
addrlen::位址長度
struct sockaddr_in
struct in_addr
int listen(int sockfd, int size);
int accept(int sockfd, struct sockaddr *addr, int *addrlen);//可能會阻塞
int connect(int sockfd, struct sockaddr* addr, int addrlen);
addr:: 要連線的伺服器的 ip 位址和埠號
命令:netstat -atp 顯示本機上所有的 tcp 服務程式以及其占用的埠號
具體實現**:
伺服器:
#include#include#include#include#include#include#include#includevoid main()
; recv(c,buff,127,0); //獲取的物件、資料、多少位元組、屬性
printf("recv::%s\n",buff);
send(c,"i know",strlen("i know"),0);
close(c);
close(sockfd);
}
客戶端:
#include#include#include#include#include#include#include#includevoid main()
; recv(sockfd,buff,127,0);
printf("recv::%s\n",buff);
close(sockfd);
}
執行時先執行伺服器後執行客戶端,執行結果如下:
Linux下TCP網路程式設計流程
常見的兩種模型 c s模型 客戶端 伺服器端 和ptp 點對點 模型。下面為tcp網路流程程式設計兩台主機之間資料傳送的具體 示例。示例 檔案server.c include include include include include include include include void m...
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...