1、伺服器端程式編寫
(1)、socket
(2)、bind
(3)、listen
(4)、accept,返回值是乙個fd,accept正確返回就表示我們已經和前來連線我的客戶端之間建立了乙個tcp連線了,以後我們就要通過這個連線來和客戶端進行讀寫操作,讀寫操作就需要乙個fd,這個fd就由accept來返回的了。
注意:socket返回的fd叫做監聽fd,是用來監聽客戶端的,不能用來和任何客戶端進行讀寫;accept返回的fd叫做連線fd,用來和連線那端的客戶端程式進行讀寫。
1 #include 2 #include /*see notes
*/3 #include 4 #include 567
8#define mtport 9003
9#define seraddr "192.168.1.109"
10#define backlog 100
11int main(void)12
;17struct sockaddr_in cliaddr = ;
1819 sockfd = socket(af_inet,sock_stream,0
);20
if(sockfd == -1)21
25 printf("
socket success,sockfd = %d.\n
",sockfd);
2627
//第二步,bind繫結sockfd和當前電腦的ip位址&埠號
28 seraddr.sin_family = af_inet; //
設定位址族為ipv4
29 seraddr.sin_port = htons(mtport); //
設定位址的埠號資訊
30 seraddr.sin_addr.s_addr = inet_addr(seraddr); //
設定ip位址
31 ret = bind(sockfd, (const
struct sockaddr *)&seraddr,sizeof
(seraddr));
32if(ret < 0)33
37 printf("
bind success.\n");
3839
//第三步:listen監聽埠
40 ret =listen(sockfd,backlog);
41if(ret < 0)42
46//
第四步:accept阻塞等待客戶端接入
47 ret = accept(sockfd,(struct sockaddr *)&cliaddr,&len);
48 printf("
hahah.\n");
49return0;
50 }
2、客戶端程式編寫
(1)、socket
(2)、connect
概念:埠號,實質就是乙個數字編號,用來在我們一台主機中(主機的作業系統中)唯一的標識乙個能上網的程序。埠號和ip位址一起會被打包到當前的程序發出或者接收到的每乙個資料報中。每乙個資料報將來在網路上傳遞的時候,內部都包含了傳送方和接收方的訊息(就是ip位址和埠號),所以ip位址和埠號這兩個往往是打包在一起不分家的。
1 #include 2 #include /*see notes
*/3 #include 4 #include 567
8#define cliport 9003 //
這裡是伺服器開放給我們的ip位址和埠號
9#define seraddr "192.168.1.109"
1011
int main(void)12
; 16
//第一步:socket
17 sockfd = socket(af_inet,sock_stream,0
);18
if(sockfd == -1)19
23 printf("
socket success,sockfd = %d.\n
",sockfd);
2425
//第二步,connect連線伺服器
26 seraddr.sin_family = af_inet; //
設定位址族為ipv4
27 seraddr.sin_port = htons(cliport); //
設定位址的埠號資訊
28 seraddr.sin_addr.s_addr = inet_addr(seraddr); //
設定ip位址
29 ret = connect(sockfd, (const
struct sockaddr *)&seraddr,sizeof
(seraddr));
30if(ret < 0)31
35 printf("
connect success,ret = %d.\n
",ret);
3637
return0;
38 }
socket程式設計實踐
socket程式設計 1 函式說明。socket 程式設計的基本函式有 socket bind listen accept send sendto recv 以及 recvfrom 等,其中根據客戶端還是服務端,或者根據使用 tcp 協議還是 udp 協議,這些函式的呼叫流程都有所區別,這裡先對每個...
socket程式設計實踐
建立連線 1.1socket 非常類似於open函式,用來開啟乙個網路連線,如果成功則返回乙個網路檔案描述符 int型別 之後我們操作這個網路連線都通過這個網路檔案描述符 1.2bind繫結的意思 好比是ioctl 1.3listen監聽 1.4connect連線 客戶端 傳送和接收 2.1 sen...
五 socket實踐程式設計
1 伺服器端程式編寫 1 socket 2 bind 3 listen 4 accept,返回值是乙個fd,accept正確返回就表示我們已經和前來連線我的客戶端之間建立了乙個tcp連線了,以後我們就要通過這個連線來和客戶端進行讀寫操作,讀寫操作就需要乙個fd,這個fd就由accept來返回了。注意...