一、基於tcp的網路程式設計(續day12)
二、併發伺服器
三、基於udp的網路程式設計
一、基於tcp的網路程式設計(續day12)
1、昨天的例子客戶端只能向指定的伺服器端傳送資料,可以利用主函式引數傳遞命令列引數,從而接收任意伺服器位址。同時也可以實現兩台機器之間的通訊(可以事先使用ping命令檢視是否通)
2、也可以使用while迴圈在客戶端不斷接收資料輸入,知道特定字元結束輸入關閉通訊,如使用fgets,或gets
#if 0#endif
可以進行條件注釋
基於tcp的伺服器:
#include #include基於tcp的客戶端:#include
in.h>#include
#include
#include
#include
intmain()
struct
sockaddr_in addr;
addr.sin_family =af_inet;
addr.sin_port = htons (8888
); addr.sin_addr.s_addr =inaddr_any;
if (bind (listenfd, (struct sockaddr*)&addr, sizeof (addr)) == -1
)
if (listen (listenfd, 1024) == -1
)
struct sockaddr_in addrcli ={};
socklen_t addrlen = sizeof
(addrcli);
int connfd = accept (listenfd, (struct sockaddr*)&addrcli, &addrlen);
if (connfd == -1
)
printf (
"伺服器已接受來自%s:%hu客戶機的連線請求\n
", inet_ntoa (addrcli.sin_addr),ntohs (addrcli.sin_port));
char buf[1024
]; ssize_t rcvd = recv (connfd, buf, sizeof (buf), 0
);if (rcvd == -1
)
if (rcvd == 0
)
buf[rcvd] = '\0'
; printf (
"客戶端說:%s\n
", buf);
printf (
"伺服器說:");
gets (buf);
ssize_t sent = send (connfd, buf, strlen (buf) * sizeof (buf[0]), 0
);if (sent == -1
)
if (close (listenfd) == -1
)
if (close (connfd) == -1
)
return0;
}
#include #include上述伺服器只能給乙個客戶端提供服務,這就需要後面講到的併發來解決。#include
in.h>#include
#include
#include
#include
intmain()
struct
sockaddr_in addr;
addr.sin_family =af_inet;
addr.sin_port = htons (8888
); addr.sin_addr.s_addr = inet_addr("
127.0.0.1");
if (connect (listenfd, (struct sockaddr*)&addr, sizeof (addr)) == -1
)
char buf[1024] = "
你好,伺服器";
printf (
"客戶端說:%s\n
", buf);
ssize_t sent = send (listenfd, buf, strlen (buf) * sizeof (buf[0]), 0
);if (sent == -1
)
ssize_t rcvd = recv (listenfd, buf, sizeof (buf), 0
);if (rcvd == -1
)
buf[rcvd] = '\0'
; printf (
"伺服器說:%s\n
", buf);
if (close (listenfd) == -1
)
return0;
}
可以使用setsockopt(2)來設定socket屬性,或者getsockopt(2)來獲取socket屬性。
二、併發伺服器
1、使用執行緒實現併發伺服器
2、多路復用計數實現併發伺服器
select(2)、poll(2)等
3、使用多程序實現併發伺服器
在這裡需要分清楚,父程序,子程序的作用,以及fork的時機。
前端學習Day13
一.如果考慮相容最小高度的設定 了解 1.正常專案中 最小高度直接用min height即可。如果考慮相容 min height 在ie6不相容,ie6預設把height解析成最小高度。注 如果height 和 min height同是出現,執行height固定高度。2.最小高度的相容設定方法 了解...
每日演算法 day 13
那些你早出晚歸付出的刻苦努力,你不想訓練,當你覺的太累了但還是要咬牙堅持的時候,那就是在追逐夢想,不要在意終點有什麼,要享受路途的過程,或許你不能成就夢想,但一定會有更偉大的事情隨之而來。mamba out 2020.2.25 記錄下來自己做題時得思路,並不一定是最優解 暴力。應該會有更好得方法 i...
每日總結 Day13
activity跳轉 如果分屏之後,想跳轉進入的目標activity展示在另一半的螢幕中,則需要設定以下flag intent.addflags intent.flag activity new task intent.flag activity launch adjacent 明天將繼續這一塊的工...