導航:首頁 > 配伺服器 > socket連接伺服器失敗怎麼判斷

socket連接伺服器失敗怎麼判斷

發布時間:2022-05-15 18:02:13

⑴ vb.net中關於 socket的連接伺服器失敗問題! 怎麼處理連接失敗

用 try-catch 結構,捕獲 SocketException,示例:

Try
//可能產生錯誤的代碼
CatchexAsSocketException
MessageBox.Show("連接失敗,原因是:"&ex.Message)
EndTry

P.S. 好久不寫 VB.NET 的了,這個是根據 C# 和記憶中的樣子寫的,題主看明白思路就好。

linux下如何判斷socket是否有效

tcp連接本身就是有狀態的...何必要依靠發送數據來確定...
第一,不管伺服器還是客戶端斷開連接,另一端必定會收到socket連接斷開的異常
第二,在socket發送數據前,可以檢查 socket.isConnected() 來判斷連接是否存在
第三,假設伺服器沒有開啟,connect動作就不應該會執行下去,直接就拋錯了

⑶ 關於socket通訊的,為什麼總連接失敗,code=5

1 查看報錯信息,就是willdis,diddis給的錯誤信息,確定是你還是服務端的問題
2 如果主機服務和埠都沒問題,有可能是你的區域網的問題(用ip就不用考慮dns的問題了),是不是路由器(硬體路由器以及你設備的防火牆)有什麼限制之類的

⑷ c#socket非同步連接後怎樣判斷連接是否成功

private int connToServer(string hostip, int hostport,int ctimeout) { IPEndPoint remoteEp = new IPEndPoint(IPAddress.Parse(hostip),hostport); try { connDone.Reset();
//開始連接 cliSock.BeginConnect(remoteEp, new AsyncCallback(connCallBack), cliSock); connDone.WaitOne(ctimeout, false); if (!cliSock.Connected) { //連接超時 return CONNTIMEOUT; } //連接成功 return 0; } catch (SocketException ex) { //連接失敗 cliSock.Close(); return CONNTIMEOUT; } catch (Exception ex) { //連接失敗 cliSock.Close(); return CONNTIMEOUT; } } private void connCallBack(IAsyncResult ar) { Socket s = (Socket)ar.AsyncState; try { s.EndConnect(ar); isConnected = s.Connected; } catch (Exception ex) { isConnected = false; //發生錯誤 return; } finally { connDone.Set(); } }

⑸ 常見Socket連接錯誤及原因有哪些

socketerrorcode:11001,socketerrorinfo:不知道這樣的主機。 表示您的計算機無法連上伺服器,請檢查您的Proxy設定以及Proxy相關賬號,或暫時取消您防毒軟體的「個人防火牆」。 2、出現網路聯機錯誤Socketerror#11004 socketerrorcode:11004,socketerrorinfo:請求的名稱有效,但是找不到請求的類型的數據。 應該是網路聯機狀態問題,請用戶檢查網路聯機是否正常。 3、出現網路聯機錯誤Socketerror#10060 Connection Timed Out socketerrorcode:10060,socketerrorinfo:由於連接方在一段時間後沒有正確答復或連接的主機沒有反應,連接嘗試失敗。 表示您與伺服器發生聯機逾時錯誤,請檢查您的Proxy相關設定,以及Proxy Server是否已將SSL 443 port打開。 4、出現網路聯機錯誤Socketerror#10061 socketerrorcode:10061,socketerrorinfo:由於目標計算機積極拒絕,無法連接。

⑹ c#socket編程怎麼判讀客戶端與伺服器斷開連接

使用Socket類中的Poll方法,就可以。
Socket client //假如已經創建好了,連接到伺服器端得Socket的客戶端對象。
我們只要client.Poll(10,SelectMode.SelectRead)判斷就行了。只要返回True是。就可以認為客戶端已經斷開了。

Poll 方法將會檢查 Socket 的狀態。指定 selectMode 參數的 SelectMode..::.SelectRead,可確定 Socket 是否為可讀。指定 SelectMode..::.SelectWrite,可確定 Socket 是否為可寫。使用 SelectMode..::.SelectError 檢測錯誤條件。Poll 將在指定的時段(以 microseconds 為單位)內阻止執行。如果希望無限期的等待響應,則將 microSeconds 設置為一個負整數。如果要檢查多個套接字的狀態,則不妨使用 Select 方法。

⑺ 如何判斷socket客戶端連接斷開

你可以根據伺服器收到的數據的長度來判斷,如果伺服器收到的數據長度是0,那麼意味著你的客戶端程序已經斷開了連接。從tcp/ip協議棧的角度來說,就是客戶端程序關閉了自己寫的這一半連接,向伺服器發出了一個fin。這涉及到tcp的狀態遷移,關於這方面的知識,建議你看一下richard
stevens先生的《tcp/ip
詳解》卷一和《unix網路編程》卷一,上面有詳細的解釋。
關於你的第二個問題,建議你仔細看一下自己的伺服器程序代碼。伺服器程序首先要建立一個監聽socket,當有客戶端連接上來時,伺服器會在一個新socket上接受客戶端連接。所以並不存在「亂」的問題。關於這個問題同樣推薦你看上面的兩本關於網路編程的經典著作。

php 的 socket如何判斷連接已經斷開

當連接斷開時,讀寫socket的函數會失敗。如socket_read()在讀取失敗時布爾值false。這時可以調用socket_last_error()和socket_strerror()函數得到錯誤代碼和錯誤信息。可以根據這個判斷失敗原因是否為連接斷開。

望採納~~

⑼ 非同步模式的socket在connect之後怎麼知道connect成功還是失敗

m_strServerIP = strServerIP;
m_nPort = nPort;

while( true )
{
// 創建套接字
m_socket = socket(AF_INET,SOCK_STREAM,0);
if( m_socket == INVALID_SOCKET )
break;
// 設置為非阻塞模式
DWORD ul = 1;
if( 0 != ioctlsocket( m_socket, FIONBIO, &ul) )
break;
// 將UNICODE的IP地址轉換為多位元組字元的IP地址
char szServerIP[16] = { 0 };
if( WideCharToMultiByte( CP_ACP,0,m_strServerIP,m_strServerIP.GetLength(),szServerIP,sizeof(szServerIP),NULL,NULL ) == 0 )
break;
// 連接指定的IP地址和埠
SOCKADDR_IN sin;
sin.sin_family = AF_INET;
sin.sin_port = htons(m_nPort);
sin.sin_addr.s_addr = inet_addr( szServerIP );
if( ! ( SOCKET_ERROR == connect( m_socket, (SOCKADDR *)&sin, sizeof(sin)) && WSAGetLastError() == WSAEWOULDBLOCK ) )
break;
// 非同步connect不會等待就直接返回了,用select的方式來判斷connect是否成功,select會阻塞,只到connect連接成功或失敗後select才返回
fd_set fs_read;
FD_ZERO( &fs_read );
FD_SET( m_socket,&fs_read );
fd_set fs_write;
fs_write.fd_count = 1;
fs_write.fd_array[0] = m_socket;
fd_set fs_error;
fs_error.fd_count = 1;
fs_error.fd_array[0] = m_socket;
int ret = select( 0,&fs_read,&fs_write,&fs_error,NULL );
if( ret == SOCKET_ERROR )
break;
// 判斷socket句柄是否可寫
if( !FD_ISSET( m_socket,&fs_write ) )
break;
int optval = -1;
int optlen = sizeof(optval);
ret = getsockopt( m_socket,SOL_SOCKET,SO_ERROR,(char*)(&optval),&optlen );
if( ret != 0 || optval != 0)
break;
// 直到這里connect才是真正成功
// 創建監聽線程收到消息的事件句柄
m_wsaEvent = WSACreateEvent();
if( m_wsaEvent == WSA_INVALID_EVENT )
break;
// 給監聽線程的消息到達事件句柄配置要通知的事件類型
if( WSAEventSelect( m_socket,m_wsaEvent,FD_READ|FD_WRITE|FD_CONNECT|FD_CLOSE ) != 0 )
break;
// 創建通知監聽線程退出的事件句柄
m_wsaClose = WSACreateEvent();
if( m_wsaClose == WSA_INVALID_EVENT )
break;
// 創建消息事件監聽線程
DWORD dwThreadId;
m_hThreadEvent = CreateThread( NULL, 0, ThreadProc_SocketEvent, this, 0, &dwThreadId );
if( m_hThreadEvent == NULL )
break;
// 創建定時發送心跳包的事件句柄
m_hEventHeartbeat= CreateEvent( NULL,TRUE,FALSE,NULL );
if( m_hEventHeartbeat == NULL )
break;
// 創建定時發送心跳包的線程
m_hThreadHeartbeat = CreateThread( NULL,0,ThreadProc_Heartbeat,this,0, &dwThreadId );
if( m_hThreadHeartbeat == NULL )
break;
// 全部創建成功,返回TRUE
return TRUE;
}

⑽ 怎樣判斷socket連接成功

socket建立連接失敗會拋出異常,你只需要在catch里捕捉異常就可以了catch(exceptione){System.out.println("伺服器/客戶端未連接");return;}

閱讀全文

與socket連接伺服器失敗怎麼判斷相關的資料

熱點內容
攻城掠地怎麼查看伺服器 瀏覽:590
android開機黑屏 瀏覽:566
mc純生存伺服器是什麼意思 瀏覽:438
樹莓派火焰蜂鳴器python 瀏覽:896
我的世界伺服器強制疾跑怎麼開 瀏覽:275
用什麼app看施工圖紙 瀏覽:491
張三學python函數 瀏覽:377
女子程序員照片 瀏覽:305
武漢c程序員招聘 瀏覽:681
csk跟蹤演算法 瀏覽:24
數據挖掘中用到的演算法 瀏覽:843
更改ubuntu伺服器地址 瀏覽:502
學做燒菜用什麼app 瀏覽:702
程序框圖怎麼加密 瀏覽:372
文件自解壓失敗怎麼辦 瀏覽:899
ug操作和產品命令 瀏覽:79
QQ在線表格怎麼加密 瀏覽:484
steam星際戰甲什麼伺服器 瀏覽:596
python重啟路由器腳本 瀏覽:821
java聊天窗口 瀏覽:978