當前位置:首頁 » 行情解析 » 股票行情socket怎麼做斷線重連
擴展閱讀
大智慧如何搜股票代碼 2025-07-05 12:47:30
哪些屬於科技類股票 2025-07-05 12:08:17
股票低位大宗交易折價 2025-07-05 11:22:44

股票行情socket怎麼做斷線重連

發布時間: 2021-06-24 19:40:27

『壹』 socket通訊。要求斷線後自動重連。我怎麼寫也沒搞定。求高手

public class MySocket
{
Socket m_socket = null;
public string server_ip;
public int server_port;

public Socket createClientSocket()
{
//在這里利用上面的IP和PORT建立到伺服器的連接。
//成功返回對應的Socket
//失敗則返回null;
return;
}

public bool connect()
{
//在這里調用上面的連接方法
m_socket = null;
m_socket = createClientSocket();

if (m_socket == null)
{
return false;
}

return true;
}

public bool reconnect()
{
//還和上面一樣調那個方法
}

///專門用來發送數據的方法
public int sendData()
{
//在這里,發送數據前就要調用下面的函數檢查Socket的狀態
bool ret = true;
bool isConnected = false;
bool isRead = false;
bool isWrite = false;
bool isError = false;
int avalSize = 0;

ret = checkSocket(ref isConnected, ref isRead, ref isWrite, ref isError, ref avalSize);
if (ret = false || isConnected == false || isError == true || (isRead == true && avalSize == 0))
{
//這里就調用那個重聯的
reconnect();
}

//完畢後再檢查一遍,看這次連上了沒
ret = checkSocket(ref isConnected, ref isRead, ref isWrite, ref isError, ref avalSize);
if (ret = false || isConnected == false || isError == true || (isRead == true && avalSize == 0))
{
//仍沒有連上的話就要交由業務部分去判斷怎麼辦了。最好是把要發送的數據放進一個隊列里
//然後在業務部分建一線程去取,再調用MySocket來發。發失敗就再放回隊列中,有一定的時間
// 間隔就行了。如次一來就實現了重連,並且數據不丟失。
}

}

///再有一個檢查Socket狀態的方法
public bool checkSocket(ref bool isConnected, ref bool isRead, ref bool isWrite, ref bool isError, ref int avalSize)
{
bool ret = true;
try
{
isConnected = m_socket.Connected;
isRead = m_socket.Poll(50, SelectMode.SelectRead);
avalSize = m_socket.Available;
isWrite = m_socket.Poll(50, SelectMode.SelectWrite);
isError = m_socket.Poll(50, SelectMode.SelectError);
}
catch (Exception e)
{
ret = false; e.ToString();
}
return ret;
}
}

『貳』 如何使一坊socket斷開重連

Close只是通知底層socket關閉而已,並不一定保證底層的鏈接一定釋放了,所以你一下子創建那麼多鏈接肯定出問題 備注 Close 方法可關閉遠程主機連接,並釋放所有與 Socket 關聯的託管資源和非託管資源。關閉後,Connected 屬性將設置為 false。 ...

『叄』 C# socket 通信系統,socket斷線重連問題

Socket連接不在通訊狀態的時候監測是否連接良好就沒有什麼意義了,也就是說在傳輸數據的時可能連接會異常斷開,這時候測試連接的線程肯定不可能在運行中(監測線程的優先順序不可能比傳輸數據線程的優先順序高),除非把優先順序設得比較高,如果這樣的話就太浪費資源了。
需要在Socket連接不在使用中時仍然保持連接,比較折衷的辦法是:
其一,建立一個低優先順序的監視線程,用來保持非通訊狀態的連接完好。
其二,用try...catch...來維持通訊過程中的連接良好(一旦通訊異常立即重新連接)。

『肆』 Websocket斷線重連怎麼實現的

把連接的函數返回值取出來,然後做判斷循環,如果超過3次就退出,或者進入下一個請求。

『伍』 怎樣判斷socket斷開並自動重連

1. 根據ERRNO和recv結果進行判斷
在UNIX/LINUX下,非阻塞模式SOCKET可以採用recv+MSG_PEEK的方式進行判斷,其中MSG_PEEK保證了僅僅進行狀態判斷,而不影響數據接收
對於主動關閉的SOCKET, recv返回-1,而且errno被置為9(#define EBADF 9 /* Bad file number */)或104 (#define ECONNRESET 104 /* Connection reset by peer */)
對於被動關閉的SOCKET,recv返回0,而且errno被置為11(#define EWOULDBLOCK EAGAIN /* Operation would block */)
對正常的SOCKET, 如果有接收數據,則返回>0, 否則返回-1,而且errno被置為11(#define EWOULDBLOCK EAGAIN /* Operation would block */)

因此對於簡單的狀態判斷(不過多考慮異常情況):
recv返回>0, 正常

『陸』 loadrunner socket 怎麼實現斷線重連

這個要跟開發的夥伴討論下,比如你一個socket連接,客戶端需要發送什麼,伺服器對應又返回什麼,這些數據知道後才能做。

『柒』 python socket客戶端怎麼實現斷線重連 求代碼示範 謝謝

斷線重連不是問題,問題是如何判斷斷線。

判斷斷線一般通過異常處理,當然也可以傻瓜式的只要有操作就重連。

下面是一個只要沒有成功連接就重連的簡單實現

importsocket
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
whileTrue:
try:
s.connect(('127.0.0.1',80))
break
except:
print('retry...')
continue
print('connected.')
s.close()

『捌』 socket 客戶端前面斷線可以重連上,十幾個小時後斷線就重連不上了,這

首先斷線有很多可能,伺服器端代碼錯誤或者網路路由問題,等等,解決這些斷線問題的方法就是心跳檢測,看應用需要採用幾秒客戶端(C)向伺服器端發送【ping】協議(協議名稱可以自己定)。然後伺服器(S)要有個儲存器(可以是哈希表或者是類數組)保存客戶端連接句柄以及一些必要屬性,還要有個時間,用來對比C每次ping的時間是否超過設定超時時間。如果超時就將C的Sock 句柄清除。到這S端就可以了。C端還要有個斷線處理,監視檢測自己是否斷線,做個重連機制,這樣一個完整的通訊就差不多了,至於其他應用就要看自己的需要通過協議來操作了。 希望這些能幫到你

『玖』 socket斷線如何重連

所謂斷線 一般是基於TCP的長連接的 保持長連接的方式用心跳包來維持
如果發生掉線
你可以通過以多線程的方式 來實現 一個線程用於心跳包的發送 位置長連接 一個用於檢測連接是否中斷 如果發生中斷 你就通過捕獲到中斷的事件來重新調用連接函數即可

『拾』 socket 用disconnect 斷開,再重新連接怎麼搞

socket一旦斷開,就無法再重新連接了(相關資源已被釋放掉了)。只能重新創建新的socket去連接。