服務端** server.c
#include
#include
#include
#include
#include
#include
#define portnum 3333 //隨便定義乙個埠
int main()
設定要繫結的位址,對server_addr初始化
bzero(&server_addr,sizeof(struct sockaddr_in));//全部成員清0
server_addr.sin_family = af_inet;
server_addr.sin_port = htons( portnum);//轉換成網路位元組序
server_addr.sin_addr.s_addr = htonl( inaddr_any);//轉換成網路位元組序
繫結位址
bind( sockfd, (struct sockaddr *)&server_addr, sizeof(struct sockaddr) );
//3. 監聽埠
listen(sockfd, 5);
while(1)
close(sockfd);
return 0;
}客戶端** client.c
#include
#include
#include
#include
#include
#include
#define portnum 3333 //要與之建立連線的伺服器端口號
int main()
設定連線的伺服器的位址
bzero(&server_addr,sizeof(struct sockaddr_in));//全部成員清0
server_addr.sin_family = af_inet;
server_addr.sin_port = htons( portnum);//轉換成網路位元組序
server_addr.sin_addr.s_addr = inet_addr("10.2.10.26");//將伺服器位址寫死,設定成虛擬機器位址。inrt_addr轉換得到的是網路位元組序位址
連線伺服器
if(connect(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr)) == -1)
//3. 傳送資料到伺服器
printf("please input char:\n");
fgets(buffer, 128, stdin); //從標準輸入拿到字元,存入buff
send(sockfd, buffer,strlen(buffer), 0);
//4 關閉連線
close(sockfd);
return 0;
}埠號一般不用修改,
客戶端設定連線的伺服器的位址時,需要設定為自己的位址
編寫makefile檔案
all:server client
server:server.c
gcc $^ -o $@
client:client.c
gcc $^ -o $@
注意命令要以tab鍵開頭
執行make all ,進行編譯
開啟兩個命令視窗,乙個執行伺服器端 ./server 另乙個執行客戶端 ./client localhost
客戶端提示輸入內容
伺服器端提示連線成功,輸出客戶端傳送過來的內容
Linux網路程式設計入門 2
linux網路程式設計 3.伺服器和客戶機的資訊函式 這一章我們來學習轉換和網路方面的資訊函式.3.1 位元組轉換函式 在網路上面有著許多態別的機器,這些機器在表示資料的位元組順序是不同的,比如i386晶元是低位元組在記憶體位址的低端,高位元組在高階,而alpha晶元卻相反.為了統一起來,在linu...
網路程式設計入門
網路程式設計本質上要做的事情就是交流,我們先來分析一下人與人交流,見上圖,我們發現人與人的通訊是分層結構的,這裡以乙個人對另乙個人說 hello world!為例。1 乙個人說了 hello world!後它就是乙個資訊,這個是資訊首先可以直接說出來,我們也可以使用暗號來代替。這就是說資訊可以選擇明...
vc網路程式設計入門
對於許多初學者來說,網路通訊程式的開發,普遍的乙個現象就是覺得難以入手。許多概念,諸如 同步 sync 非同步 async 阻塞 block 非阻塞 unblock 等,初學者往往迷惑不清,只知其所以而不知起所以然。同步方式指的是傳送方不等接收方響應,便接著發下個資料報的通訊方式 而非同步指傳送方發...