① 如何編寫一個判斷當前網路連接狀態的C/C++函數
用DOS命令 netstat 轉向 到文件,再讀文件,分析內容。
netstat 有一些選項,根據你的需要可以選設。
system("netstat -a > my_net.dat");
打開 my_net.dat
讀文件,分析內容。
netstat 用法在命令窗 打
netstat /?
查看。
② c++怎麼檢查網路連接狀態
做人要謙虛, 沒有認真看別人的回答就在這里亂叫, 太天真了
③ 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++ 請問怎樣判斷是否斷網
應該是游戲本身出了問題,或者你重裝一下
vc++
運行庫,dnf應該是vc++
編寫的所以必須要哪個,如果那個出問題是沒法運行的,本人沒玩過dnf,所以只能根據你的描述判斷了,不過我建議你還是重新裝游戲靠譜點
⑤ 檢測網路是否連通
1.
例如想檢測一個網路下的另一台電腦是否連通網路,那麼首先要查到對方的 IP。查 IP
的方法前面我們已經講過了,這里假設已知另一台電腦的IP 是192.168.1.202.
那麼檢測方法就是:開始「-」運行「,輸入CMD,在彈出的DNS 窗口中輸入
Ping 192.168.1.202 –T(加參數-T 是連續ping 的意思,也可以不加。)
如果出現上圖中的數據,說明另一台電腦是連通區域網的。
如果出現上圖中的數據,說明另一台電腦是連不通網路的。
2. 檢測網路是否正常
在開始-運行,那裡輸入「cmd」 。進入 DOS 窗口。在 DOS 窗口中輸入 ping
202.96.134.134 –t (註:我ping 的這個地址是深圳電信的DNS 伺服器。大家可根據客戶
這個ping 窗口運行一段時間後,想得到結果,方法:按下鍵盤的「Ctrl"鍵,再按「C」。
就可以得到結果:丟包個數,丟包率,最大延時,最小延時和平均延時。
說明:1、SENT= 這是你共PING 多少個包;
2、RECEIVED= 這是正常的包;
3、LOST=0 (0% LOSS) 這是丟包的個數和丟包率;
4、MINIMUM =329MS ,MAXIMUM=619MS AVERAGE=379MS 這分別是最小,
最大和平均延時。
我們著重注意二個數據。一個是LOST。就是丟包數和丟包率。丟包在屏幕上的顯示是:
Requested time out。第二個是延時。屏幕上顯示的是 time=344ms,這個344 就代
表你的網路速度。此數值是不斷變化的,數值越小網路環境越好,一般延時的正常數值穩
在上圖中我的網路環境就很差。延時在300-600 之間。並且丟包嚴重,丟包率達到35%
⑥ C語言關於socket中如何判斷客戶端是否與伺服器保持連接
寫失敗之後獲取錯誤值會告訴你錯誤原因,是網路斷了還是怎麼樣。
再一個如果遠程關閉連接你會收到 EOF。
⑦ 如何用c/c++代碼編寫一個實現,自動判斷自己電腦是否連上了網或斷開了網 答案要求程序代碼
if (InternetCheckConnection( 'http://www.yahoo.com/ ', 1, 0) )
edit1-> text:= 'Connected ';
else
edit1-> text:= 'Disconnected ';
另外一個.
BOOL InternetQueryOption(
IN HINTERNET hInternet,
IN DWORD dwOption,
OUT LPVOID lpBuffer,
IN OUT LPDWORD lpdwBufferLength
);
參數的意義是:
hInternet:查詢對象的 Internet 句柄(全局查詢時為 nil),
dwOption:查詢的項目;
lpBuffer:返回的查詢結果;
lpdwBufferLength:查詢結果的位元組長度(包括 IN 和 OUT);
查詢成功返回 True,否則返回 False;
我們要查詢當前計算機的 Internet 連接狀態時可以使用查詢項目 INTERNET_OPTION_CONNECTED_STATE,
得到的 ConnectState 返回值可能是以下值的一個或幾個值之和:
INTERNET_STATE_CONNECTED :$00000001 連接狀態;
INTERNET_STATE_DISCONNECTED :$00000002 非連接狀態(和 INTERNET_STATE_CONNECTED 對應);
INTERNET_STATE_DISCONNECTED_BY_USER :$00000010 用戶請求的非連接狀態
INTERNET_STATE_IDLE :$00000100 連接狀態,並且空閑
INTERNET_STATE_BUSY :$00000200 連接狀態,正在響應連接請求
⑧ 如何用c語言來判斷網路是否通
判斷網路通暢 一般用ping的方式
可以直接使用系統命令
通過popen 打開Ping名令 到結果找返回的時間關鍵字
如果ping通比例達到一定值以上,即可認為網路通暢。
popen具體用法 請自行網路。
⑨ 如何用C語言檢測網路是否連接上、已連接、已斷開狀態
如果對方斷開連接的話,那麼readNum = recv ( socketId, rcvBuf, rcvBufSize, 0 );
readNum返回值應該是0,可以根據返回值判斷
還有一種辦法,就是做一個心跳檢測,定時發送消息,如果發送失敗就知道對方不在了
⑩ 已知IP和埠,用c語言怎麼判斷能不能連接網路
持續建立tcp連接
建立成功就是和伺服器連上了
不成功就等於是無網路
建立成功後,保持一個心跳連接確定網路通暢就好