『壹』 c語言如何檢測網路是否連接
1、如果對方斷開連接的話,那麼readNum = recv ( socketId, rcvBuf, rcvBufSize, 0 );
readNum返回值應該是0,可以根據返回值判斷。
2、recv函數返回值說明
recv函數
int recv( SOCKET s, char FAR *buf, int len, int flags);
不論是客戶還是伺服器應用程序都用recv函數從TCP連接的另一端接收數據。該函數的第一個參數指定接收端套接字描述符; 第二個參數指明一個緩沖區,該緩沖區用來存放recv函數接收到的數據; 第三個參數指明buf的長度; 第四個參數一般置0。
這里只描述同步Socket的recv函數的執行流程。當應用程序調用recv函數時,
(1)recv先等待s的發送緩沖中的數據被協議傳送完畢,如果協議在傳送s的發送緩沖中的數據時出現網路錯誤,那麼recv函數返回SOCKET_ERROR,
(2)如果s的發送緩沖中沒有數據或者數據被協議成功發送完畢後,recv先檢查套接字s的接收緩沖區,如果s接收緩沖區中沒有數據或者協議正在接收數 據,那麼recv就一直等待,直到協議把數據接收完畢。當協議把數據接收完畢,recv函數就把s的接收緩沖中的數據到buf中(注意協議接收到的數據可能大於buf的長度,所以 在這種情況下要調用幾次recv函數才能把s的接收緩沖中的數據完。recv函數僅僅是數據,真正的接收數據是協議來完成的), recv函數返回其實際的位元組數。如果recv在時出錯,那麼它返回SOCKET_ERROR;如果recv函數在等待協議接收數據時網路中斷了,那麼它返回0。 默認 socket 是阻塞的 解阻塞與非阻塞recv返回值沒有區分,都是 <0 出錯 =0 連接關閉 >0 接收到數據大小,
特別:返回值<0時並且(errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN)的情況下認為連接是正常的,繼續接收。只是阻塞模式下recv會阻塞著接收數據,非阻塞模式下如果沒有數據會返回,不會阻塞著讀,因此需要循環讀取)。
返回說明: 成功執行時,返回接收到的位元組數。另一端已關閉則返回0。失敗返回-1,errno被設為以下的某個值 EAGAIN:套接字已標記為非阻塞,而接收操作被阻塞或者接收超時 EBADF:sock不是有效的描述詞 ECONNREFUSE:遠程主機阻絕網路連接 EFAULT:內存空間訪問出錯 EINTR:操作被信號中斷 EINVAL:參數無效 ENOMEM:內存不足 ENOTCONN:與面向連接關聯的套接字尚未被連接上 ENOTSOCK:sock索引的不是套接字 當返回值是0時,為正常關閉連接;
思考:當對側沒有send,即本側的套接字s的接收緩沖區無數據,返回值是什麼(EAGAIN,原因為超時,待測)
『貳』 如何用C語言檢測網路是否連接上、已連接、已斷開狀態
如果對方斷開連接的話,那麼readNum = recv ( socketId, rcvBuf, rcvBufSize, 0 );
readNum返回值應該是0,可以根據返回值判斷
還有一種辦法,就是做一個心跳檢測,定時發送消息,如果發送失敗就知道對方不在了
『叄』 申請一個C類網路ip,如何將數以萬計的計算機連接到internet上
電腦網路問題。根據你的描述,申請一個C類網路ip。要將數以萬計的計算機連接到internet上。解決方法是:因為一個c類網只能254台主機,那麼只能先接254台路由器,每台路由器再接路由器。下面就可以擴展計算機了。
『肆』 一個使用c類ip地址的區域網中,最多隻能連接多少台主機怎麼算
C類IP地址主機位為8位,最多IP地址為2的8次方256個,由於要減掉一個廣播地址、一個網路地址因此就剩餘254個了。
C類IP地址包含私有C類地址,地址的表示範圍為:192.0.0.0~223.255.255.255。C類地址分配給小型網路,如一般的區域網和校園網,它可連接的主機數量是最少的,採用把所屬的用戶分為若乾的網段進行管理。C 類網路可達 209 萬余個,每個網路能容納 254 個主機。
C類網路用前三組數字表示網路的地址,最後一組數字作為網路上的主機地址。C類地址默認子網掩碼為255.255.255.0。「網路負載平衡」為 C 類 IP 地址提供可選的會話支持(除了支持單個 IP 地址以外)以適應在客戶站點使用多個代理伺服器的客戶。
(4)c網路連接擴展閱讀
IP地址中A類、B類、C類地址的區別
1、IP地址范圍不同:
A類IP地址 地址范圍從1.0.0.1到127.255.255.254 (二進製表示為:00000001 00000000 00000000 00000001 - 01111111 11111111 11111111 11111110)。最後一個是廣播地址。
B類IP地址地址范圍從128.0.0.1-191.255.255.254 (二進製表示為:10000000 00000000 00000000 00000001-10111111 11111111 11111111 11111110)。 最後一個是廣播地址。
C類IP地址范圍從192.0.0.1-223.255.255.254 (二進製表示為: 11000000 00000000 00000000 00000001 - 11011111 11111111 11111111 11111110)。最後一個是廣播地址。
2、子網掩碼不同:
A類IP地址的子網掩碼為255.0.0.0
B類IP地址的子網掩碼為255.255.0.0
C類IP地址的子網掩碼為255.255.255.0
3、適用范圍不同:
A類適用的類型為大型網路,A類網路地址數量較少,有126個網路,每個網路支持的最大主機數為256的3次方-2=16777214台;
B類適用的類型為中型網路,B類網路地址數量適中,有16384個網路,每個網路支持的最大主機數為256的2次方-2=65534台;
C類適用的類型為小型網路,C類網路地址數量較多,有209萬余個網路,適用於小規模的區域網絡,每個網路支持的最大主機數為256的1次方-2=254台。