第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

java Socket 程序server端調(diào)用isClosed為什么檢測(cè)不到狀態(tài)

java Socket 程序server端調(diào)用isClosed為什么檢測(cè)不到狀態(tài)

炎炎設(shè)計(jì) 2019-04-17 11:09:19
一個(gè)簡(jiǎn)單的socket程序, 當(dāng)client這邊socket.close調(diào)用后,可以看到socket.isClosed()是為true。但是服務(wù)器端這邊, server.accept() 得到的那個(gè)socket調(diào)用isClosed總是返回false。是否我在不借助心跳的情況下, server端無(wú)法僅通過api判斷client掉線?我想了幾種情況。如果client 最后調(diào)用了socket.close(), 那么server可以通過getInputStream.read() 讀到-1.如果client,沒有調(diào)用close, 直接通過小紅點(diǎn)終止了程序, server端getInputStream.read()會(huì)報(bào)異常但是, 1的話, client發(fā)送一段流過來(lái),沒有關(guān)閉的話, server端讀到最后也會(huì)讀到-1. 所以-1不能判斷連接的狀態(tài)。 2的話,似乎可以判斷連接斷了,只要異常發(fā)生了。但是總感覺是異常控制了業(yè)務(wù)流程。不太規(guī)范。
查看完整描述

2 回答

?
揚(yáng)帆大魚

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊

-1為斷開沒有問題。isClosed不可靠的,例如拔掉client端網(wǎng)線的話,server端還是認(rèn)為沒有斷開。要靠polling機(jī)制或者tcp的keepalive機(jī)制。


查看完整回答
反對(duì) 回復(fù) 2019-04-18
?
holdtom

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超10個(gè)贊

client發(fā)送一段流過來(lái),沒有關(guān)閉的話, server端讀到最后也會(huì)讀到-1

這句話不對(duì),沒有關(guān)閉且一段數(shù)據(jù)讀完的話繼續(xù)read()應(yīng)該是阻塞。


查看完整回答
反對(duì) 回復(fù) 2019-04-18
  • 2 回答
  • 0 關(guān)注
  • 1340 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)