UE4 FSocket client客戶端如何檢測(cè)與server服務(wù)端斷開(kāi)
目前FScoket無(wú)法做到感知服務(wù)端關(guān)閉tcp鏈接,要做到只能通過(guò)兩種其他方式:
1,使用BSD socket(建議使用non-blocking mode,因?yàn)檫@樣方便終止接收線程);
2,客戶端發(fā)送心跳包給服務(wù)端,如果沒(méi)有得到回應(yīng)則認(rèn)為關(guān)閉。
下面方法僅適用于客戶端自己關(guān)閉連接,如果是服務(wù)端關(guān)閉是沒(méi)法感知的
- if (Socket->GetConnectionState() != SCS_Connected)
- {
- // Socket disconnected
- }
- else
- {
- if (Socket->HasPendingData(Size))
- {
- Socket->Recv(Data, MaxBuffer, BytesRead);
- }
- }
之前在answerhub上提了一個(gè)bug說(shuō)明這個(gè)情況,但是得到的回復(fù)是讓我仔細(xì)檢查自己的代碼,說(shuō)FSocket就是基于BSD實(shí)現(xiàn)的, 本來(lái)想直接貼代碼給他解釋下的,但是感覺(jué)麻煩不想折騰。
-
分享到:
您需要登錄后才可以發(fā)帖 登錄 | 立即注冊(cè)
- 用戶名:
- 密 碼:
- 驗(yàn)證碼: 看不清? 點(diǎn)擊更換
- 忘記密碼?
全部評(píng)論:0條