我想在我的程式中加入下面的功能:
比如程式運行后有一個程序一直檢測是否網路連接,當檢測到網路連接后停止檢測,并把另一個CPP中的一個文字由原來的“網路未連接”修改成"網路已連接"
這樣的功能如何實作呢,
先謝謝各位兄弟們了
uj5u.com熱心網友回復:
開一個執行緒判斷uj5u.com熱心網友回復:
樓上哥們能不能詳細些。我是新手,不太懂啊uj5u.com熱心網友回復:
AfxBeginThread啟動新執行緒,執行緒中判斷socket是否正常,例外時發送訊息到另一個視窗uj5u.com熱心網友回復:
// AfxbeginThread創建一個執行緒,執行緒中一直檢測連接是否到達。到達后通知UI更新,并退出執行緒。uj5u.com熱心網友回復:
在功能設計中將程式的結構分成:主控、通信和其它模塊,各模塊分屬不同的執行緒,模塊間通過自定義訊息通信。在通信模塊完成連接后,發送訊息給主控,主控即可進行連接狀態的顯示處理。uj5u.com熱心網友回復:
使用心跳包。uj5u.com熱心網友回復:
謝謝各位兄弟的解答,我先百度一下AfxbeginThread,找找例子,看能不能解決,uj5u.com熱心網友回復:
執行緒這個東西,是開發桌面網路程式的良方。
uj5u.com熱心網友回復:
AfxbeginThread應該加在哪個地方,怎么檢測網路是否連接,如何通知另一個CPP更改文字啊。有點暈啊uj5u.com熱心網友回復:
有沒有兄弟能給一個例子啊,實在不知道應該都加在什么地方啊uj5u.com熱心網友回復:
網路連接成功或斷開系統均會自動給出事件訊息,只要處理該事件即可,何需再用一個“程序”去監視?在收到連接成功的訊息事件處理中,顯示“連接成功”。我在程式中建立連接成功即認為成功,通知主程式在界面顯示“設備已連接”:
if(!m_ClientSocket->Connect(m_defaultIP,m_defaultPort)) // 連接指定的地址、埠
{
// 客戶端連接失敗
SocketReset(); // 釋放分配空間,子程式清空了m_Connect字串
//重新連接,復位狀態機
m_netState=S0;
NetCommState(ev_conn);
}
else
{
// 連接成功,創建通信流
m_file=new CSocketFile(m_ClientSocket);
// 連接成功,通知主控程式
NetCommState(ev_conn_ok);
}
uj5u.com熱心網友回復:
好久沒上論壇,這個功能也一直沒實作,今天我再試一下uj5u.com熱心網友回復:
你哪個網路連接指的是與某一臺電腦連接?還是指螢屏右下角的“網路沒有連接”圖示?是哪一種情況,每一種都有不同的解法uj5u.com熱心網友回復:
我的意思是檢測外網是否連通,如果有外網,就顯示已連接,否則顯示未連接。
uj5u.com熱心網友回復:
ping www.baidu.com ?
uj5u.com熱心網友回復:
有沒有什么好的解決辦法啊uj5u.com熱心網友回復:
SOCKET sockClient = socket(AF_INET, SOCK_STREAM, 0);
// connect server socket
SOCKADDR_IN addrServer;
addrServer.sin_addr.S_un.S_addr = inet_addr("192.168.1.1");
addrServer.sin_family = AF_INET;
addrServer.sin_port = htons(80);
if(connect(sockClient, (SOCKADDR *)&addrServer, sizeof(addrServer))==SOCKET_ERROR) // 連接指定的地址、埠
{
MessageBox(NULL,_T("客戶端連接失敗"),_T("問候"),0) ;
}
else
{
MessageBox(NULL,_T("客戶端連接成功"),_T("問候"),0) ;
}
謝謝兄弟們了,萬分感謝中。
uj5u.com熱心網友回復:
我找到了一段代碼,但為什么總是提示連接失敗呢?
SOCKET sockClient = socket(AF_INET, SOCK_STREAM, 0);
// connect server socket
SOCKADDR_IN addrServer;
addrServer.sin_addr.S_un.S_addr = inet_addr("192.168.1.1");
addrServer.sin_family = AF_INET;
addrServer.sin_port = htons(80);
if(connect(sockClient, (SOCKADDR *)&addrServer, sizeof(addrServer))==SOCKET_ERROR) // 連接指定的地址、埠
{
MessageBox(NULL,_T("客戶端連接失敗"),_T("問候"),0) ;
}
else
{
MessageBox(NULL,_T("客戶端連接成功"),_T("問候"),0) ;
}
謝謝兄弟們了,萬分感謝中。
uj5u.com熱心網友回復:
try{}catch()
finally{
}
uj5u.com熱心網友回復:
捕獲例外,在看是什么問題.轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/147891.html
標籤:界面
上一篇:有沒有這樣一個濾波器
下一篇:vs2013用ODBC連接oracle12g_64提示[Microsoft][ODBC 驅動程式管理器] 在指定的 DSN 中,驅動程式和應用程式之間的體系結
