1. 程式人生 > >關於C#Socket斷開重連問題

關於C#Socket斷開重連問題

      TCP客戶端可以向TcpServer傳送資料包時,若網路斷開,原來的連線就會失效,出現以下錯誤提示:

斷開套接字連線後,只能通過非同步方式再次重新連線,而且只能連線到不同的 EndPoint。在操作完成前,在將不會退出的執行緒上必須呼叫 BeginConnect

      導致無法傳送資料包,如何處理呢?主要原因還是已斷開的連線無法再使用,只能重新建立,因為我們可以採用自動重新建立連線的方式來解決,如下程式碼所示:

private static Socket _SocketClient;

        ///<summary>

        /// Socket客戶端自動重新建立

        ///</summary>

        public static Socket SocketClient { get {

                if (_SocketClient == null) {

                    _SocketClient = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

                    _SocketClient.Connect(new IPEndPoint(IPAddress.Parse("IP地址"

), _port)); //配置伺服器IP與埠

                    return _SocketClient;

                }

--斷開自動重新建立連線

                if (!_SocketClient.Connected) {

                    _SocketClient.Close();

                    _SocketClient= new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

                    _SocketClient.Connect(new IPEndPoint(IPAddress.Parse("IP地址"), _port)); //配置伺服器IP與埠

                    return _SocketClient;

                }

                return _SocketClient;

            }

}

呼叫時直接用 SocketClient.send()方法傳送資料即可;

相關推薦

關於C#Socket斷開問題

      TCP客戶端可以向TcpServer傳送資料包時,若網路斷開,原來的連線就會失效,出現以下錯誤提示: 斷開套接字連線後,只能通過非同步方式再次重新連線,而且只能連線到不同的 EndPoint。在操作完成前,在將不會退出的執行緒上必須呼叫 BeginConnect

C++基礎--完善Socket C/S ,實現客戶端,伺服器端斷開

相關文章 1 // WindowsSocketServer.cpp : 定義控制檯應用程式的入口點。 2 // 3 4 #include "stdafx.h" 5 #include <iostream&

C++ Socket C/S ,實現客戶端,伺服器端斷開

// WindowsSocketServer.cpp : 定義控制檯應用程式的入口點。 #include "stdafx.h" #include <iostream> #include <string> #include <Windows.h> #include <

說說“用戶無線網絡時不時斷開”的故障!

protocol bit 觀察 stat *** 一段 官方 查看 為什麽 故障現象:用戶反映很多的人的筆記本連接無線時,不定時的就會斷開無線網絡,然後重新連接。網絡環境:1、所有AP由無線控制器統一管理,采用本地轉發,品牌為優科。2、所有AP由思科2960 POE交換機提

Android基於XMPP Smack Openfire下學習開發IM(五)斷開

pen ide get ref ces 最好 string smack led 學習過程中大家都碰到過連接被斷開的問題給困擾吧,下面教大家如何做到連接斷開後,重新連接首先要創建連接監聽器,用來監聽連接狀態,這裏我寫了一個類繼承了ConnectionListener,重寫了裏

websocket斷開解決方案,基於子慕大詩人部落格修改 健壯強化版

歡迎大家來到Altaba的部落格  2017年11月27日 相信隨著H5的演進,我們越來越多接觸到websocket的使用,本身就使用此技術並不難,但是在開發中會遇到各種無法預測的原因,有瀏覽器相容問題,有後臺的意外斷開,狀態百出。 本人前端開發遇到這樣的問題:websoc

websocket 斷開

websocket 5行程式碼模子: 1.例項化WebSocket物件    var old=new WebSocket("ws://xxx.xxxxx.xxx.xxxx"); 2.回撥事件的處理   old.onerror = function(){}   old.onop

sokcet 斷開問題

   socket伺服器已經斷開而主專案這邊完全不知道,如何判斷遠端伺服器是否已經斷開連線,如果斷開那麼需要重新連線。     首先想到socket類的方法isClosed()、isConnected()、isInputStreamShutdown()、 isOutputS

Android基於XMPP Smack Openfire下學習開發IM(五)連線斷開

學習過程中大家都碰到過連線被斷開的問題給困擾吧,下面教大家如何做到連線斷開後,重新連線 首先要建立連線監聽器,用來監聽連線狀態,這裡我寫了一個類 繼承了ConnectionListener,重寫了裡面5個方法,最重要的兩個方法connectionClosed()和conn

java socket tcp等 處理粘包、沾包

這個程式是前段時間寫的德州撲克棋牌手程式,現在把以前寫的東西整理出來。 下面是socket部分,還是很有幫助的: private void start(String severIP, int serverPort) { // TODO Auto-generated me

再淡spring jdbc 連線池斷開設定

先看一段錯誤日誌: ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allow

解決連線伺服器zookeeper時報以下錯誤 並且大量連線斷開

likely server has closed socket, closing socket connection and attempting reconnect 解決方法: 1 檢視伺服器zookeeper是否正常開啟 2 檢察防火牆是否關閉(有時重啟會開啟)

gprs經常斷開

1、gprs連線:     現象:發現連線上,大概過一分多鐘就會斷開,再過幾分鐘才可以連線上     除錯:發現發包到8.8.8.8,發包失敗,然後傳送AT指令沒有資料返回    處理:1、換一個心跳伺服器,例如公司測試的伺服器、電腦上面的DNS(主要是看這個伺服器是否

C# 實現撥號

alt getc 重新 ive windows value 用戶名 for lena 先斷開網絡連接 1 /// <summary> 2 /// 斷開網絡連接 3 /// </summary> 4 public static

QT 中Socket客戶端與伺服器異常斷開

在現在的專案開發中,經常要使用TCP/IP協議來進行通訊,但有時候與伺服器端的連結由於網路問題導致連線異常或斷開,這就需要我們的軟體能自動重連,在Linux中,我們的思維一般是通過心跳包來監控連線是否斷開,有時候還單獨開一個執行緒,但是在QT中,就變得簡單多了,當連線異常

Windows C語言 Socket程式設計 client端(客戶端)--斷線

瞭解了最基礎的C語言客戶端的編寫流程,稍稍加以改動即可實現斷線重連。 當伺服器掉線時,客戶端會以固定的頻率不停的重連。 #include <stdio.h> #include <winsock2.h> #pragma comme

C++ TCP socket程式設計中的小陷阱(服務端accept 不阻塞 和 客戶端connect 失敗)

在編寫一個使用C++ socket實現的TCP服務端與客戶端小軟體時接連碰上2個小陷阱, 終歸是實踐不足,基本功不紮實。 第1個問題: 服務端的accept函式沒有阻塞     程式執行到accept這裡時直接就跳了過去,根本沒停下來。     懷疑過socket

C# 判斷Socket斷線

定時器裡面的事件 private void isConnendTimer_Tick(object sender, EventArgs e) { // 首先,Socket類的Connected屬性只表示最後一次I/

C# + Socket斷線

轉自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=28765492&id=3793532 感謝作者的分享,收藏 一、網上常用方法 1、當Socket.Conneted == false時,

C# + Socket斷線 整理

1.如果是採用TCP/udp協議進行連線,檢查windows防火牆是否開放相應SocketTCP/udp埠;   簡單的檢測方法是關閉windows防火牆後再試; 2.檢查防火牆軟體是否開放相應SocketTCP/udp埠;   簡單的檢測方法是關閉防火