久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

關于java網絡編程client端提示SocketException

瀏覽:102日期:2024-02-12 17:09:15

問題描述

問題解答

回答1:

請指正:問題可能的關鍵點:一個客戶端,只做一次 accept(),不關閉輸出流

1.客戶端保持了一個 clientSocket 實例(只調用了一次connect),服務器保持了一個 ServerSocket 實例。只保持一個客戶端socket并且希望有第二次輸入處理,這似乎是準備用長連接。

當關閉輸出流時,該輸出流對應的socket也將隨之關閉 —— 《瘋狂java講義(第三版)》 p786

2.再往下看服務端。ss.accept() 放在了循環里,這是要處理多個客戶連接;順便對每個客戶端有一次讀取操作,然后這里并沒有后續多次的讀取操作,這可能是問題所在。

短連接 or 長連接?對于希望連續的多次通訊,可以使用一個連接,多次讀寫(長連接),也可以多次連接,每個連接一次讀寫(短連接)你的客戶端想搞長連接,服務器似乎想搞短連接。建議:

長連接:客戶端不變,服務器對這一個客戶端,只做一次 accept(),循環處理多次輸入通訊,監聽流,但不關閉socket

短連接:客戶端每次發起新 socket 連接(建立新socket實例),每次操作完成,關閉流,關閉socket。服務器循環體不變,在循環體里關閉流,關閉每次accept()返回的socket

因為不清楚您的業務,所以不知道代碼的真實意圖。另外還值得拓展的關注點是:

多客戶端連接,多次連接,會話管理,并發等等。

回答2:

可以好好看看你的代碼,你在while循環里面每次都進行了關閉。

標簽: java
相關文章:
主站蜘蛛池模板: 凤阳县| 凤城市| 名山县| 嘉善县| 黔西县| 西贡区| 昌江| 论坛| 湄潭县| 梁山县| 西充县| 响水县| 雅江县| 永城市| 英吉沙县| 常山县| 墨江| 卓资县| 随州市| 永胜县| 都兰县| 呼伦贝尔市| 奉贤区| 会昌县| 楚雄市| 青神县| 萨嘎县| 乌审旗| 呼图壁县| 黄陵县| 化州市| 拜城县| 丹巴县| 诏安县| 桓台县| 石泉县| 连云港市| 五家渠市| 海阳市| 禄丰县| 安国市|