日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

淺談java socket的正確關(guān)閉姿勢

瀏覽:49日期:2022-08-10 14:48:53

java socket對應(yīng)的是網(wǎng)絡(luò)協(xié)議中的tcp,tcp的三次握手、四次揮手、11中狀態(tài)什么的這里就不說了,不知道大家平常使用socket的時候如果不注意的情況下,會不會遇到各種異常報錯。

例如:

java.net.SocketException:socket is closed

錯誤提示的出現(xiàn)場景:

自己主動關(guān)閉了socket,但是之后還從里面讀寫數(shù)據(jù)

Software caused connection abort: socket write error

錯誤提示的出現(xiàn)場景:

對方已經(jīng)關(guān)閉socket,依舊向?qū)Ψ綄憯?shù)據(jù)

connection reset (by peer)

錯誤提示出現(xiàn)的場景:

一端socket被關(guān)閉,另一端仍然發(fā)送數(shù)據(jù),發(fā)送的第一個數(shù)據(jù)包 connection reset by peer

一端socket退出,退出時為關(guān)閉連接,另一端讀數(shù)據(jù) connection reset

所以在使用socket時,需要約定好雙方讀寫完成的條件,然后關(guān)閉輸入輸出流:

socket.shutdownInput();socket.shutdownOutput();

即當(dāng)一方寫入完成后,調(diào)用shutdownOutput關(guān)閉輸出流,這時候?qū)Ψ降膔ead方法就會返回-1,這時候?qū)Ψ骄椭滥銓懲炅耍瑢Ψ娇梢躁P(guān)閉輸入流,然后等待對方寫入完成調(diào)用shutdownOutput后己方再調(diào)用shutdownInput,雙方就正常關(guān)閉了輸入輸出流,這時候socket就不會出現(xiàn)異常了。

下面是一個socket交互的例子:

server端

public class OioServer { public static void main(String[] args) throws IOException {ServerSocket serverSocket = new ServerSocket(8080);while (true) { Socket socket = serverSocket.accept(); System.out.println('socket = ' + socket); new Thread(() -> {try { InputStream in = socket.getInputStream(); OutputStream out = socket.getOutputStream(); out.write('hello! I get your message that is follow'.getBytes(Charset.forName('UTF-8'))); byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) != -1) {System.out.print(new String(buf, 0, len, Charset.forName('UTF-8')));out.write(buf, 0, len); } out.write('n end n'.getBytes(Charset.forName('UTF-8'))); out.flush(); socket.shutdownInput(); socket.shutdownOutput();} catch (IOException e) { e.printStackTrace();}finally { try {socket.close(); } catch (IOException e) {e.printStackTrace(); }} }).start();} }}

client端

public class OioClient { public static void main(String[] args) throws IOException {Socket socket = new Socket('127.0.0.1', 8080);InputStream in = socket.getInputStream();new Thread(() -> { BufferedInputStream bufferIn = new BufferedInputStream(in); byte[] buf = new byte[1024]; try {int len;while ((len = bufferIn.read(buf)) != -1) { System.out.print(new String(buf, 0, len, Charset.forName('UTF-8')));} }catch (Exception e) {e.printStackTrace(); } try {socket.shutdownInput();socket.close(); } catch (IOException e) {e.printStackTrace(); }}).start();OutputStream out = socket.getOutputStream();int cout = 10;while (cout-- > 0) { out.write(('this time is ' + System.currentTimeMillis() + 'n').getBytes('UTF-8'));}socket.shutdownOutput(); }}java socket - 半關(guān)閉

通常,使用關(guān)閉輸出流來表示輸出已經(jīng)結(jié)束。但在進(jìn)行網(wǎng)絡(luò)通信時則不能這樣做。因?yàn)槲覀冴P(guān)閉輸出流時,該輸出流對應(yīng)的Socket也將隨之關(guān)閉,這樣程序?qū)o法再從該socket中讀取數(shù)據(jù)。

為了應(yīng)付這種情況,socket提供了兩個半關(guān)閉的方法用來只關(guān)閉socket的輸入流或者輸出流,用以表示輸出數(shù)據(jù)已經(jīng)發(fā)送完成。

方法詳情:

shutdownInput():關(guān)閉該socket的輸入流,程序還可以通過該socket的輸出流輸出數(shù)據(jù);

shutdownOutput():關(guān)閉該socket的輸出流,程序還可以通過該socket的輸入流讀取數(shù)據(jù)。

當(dāng)調(diào)用shutdownInput()或shutdownOutput()方法關(guān)閉輸入流或輸出流后,該socket處于半關(guān)閉狀態(tài)。

此時可以使用isInputShutdown()或isOutputShutdown()來判斷該socket是否處于半讀狀態(tài)或半寫狀態(tài)。

需要注意的是,即使同一個socket先后調(diào)用shutdownInput()和shutdownInput()方法,該socket實(shí)例仍然沒有被關(guān)閉,只是該socket既不能輸出數(shù)據(jù)也不能讀取數(shù)據(jù)而已。

當(dāng)調(diào)用shutdownInput()或shutdownOutput()方法關(guān)閉了輸入流或輸出流之后,該socket無法再次打開輸出流或輸入流,因此這種做法不適合需要保持持久通信狀態(tài)的交互式應(yīng)用。

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
石原莉奈在线亚洲三区| 亚洲欧美久久久| 日韩成人精品一区| 青青草国产成人99久久| 蜜臀av一区二区三区| 欧美午夜精彩| 欧美激情另类| 日韩精品一卡| 亚洲综合色婷婷在线观看| 中日韩男男gay无套| 国产视频一区欧美| 免费看黄色91| 日本综合精品一区| 国产欧美三级| av中文资源在线资源免费观看| 欧美国产极品| 偷拍精品精品一区二区三区| 风间由美中文字幕在线看视频国产欧美| 久久免费福利| 久久国产免费| 亚洲免费毛片| 成人在线观看免费视频| 狠狠久久婷婷| 欧美中文一区| 色偷偷偷在线视频播放| 中文在线不卡| 麻豆精品视频在线观看| 亚洲手机在线| 国产欧美亚洲一区| 久久国产主播| 国产亚洲精品美女久久| 三级在线看中文字幕完整版| 久久91视频| 国产日韩一区二区三区在线| 国产精品99在线观看| 在线视频精品| 国产传媒av在线| 日韩精选在线| 婷婷综合网站| 精品女同一区二区三区在线观看| 91国语精品自产拍| 岛国av在线网站| 91精品在线免费视频| 91精品推荐| 精品资源在线| 在线观看亚洲精品福利片| 中文字幕日本一区二区| 久久99免费视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 日韩av二区| 国产欧美精品| 日本大胆欧美人术艺术动态| 特黄特色欧美大片| 麻豆精品av| 欧美亚洲三级| 一区二区国产精品| 亚洲欧美视频| 午夜欧美精品久久久久久久| 亚洲播播91| 在线亚洲观看| 激情91久久| 天堂网在线观看国产精品| 国产人成精品一区二区三| 亚洲精品1区| 激情婷婷综合| 欧美午夜不卡影院在线观看完整版免费| 丁香婷婷久久| 97精品在线| 日韩欧美一区二区三区免费看| 精品久久久中文字幕| 国产欧美视频在线| 四虎精品永久免费| 国产精品夜夜夜| 喷白浆一区二区| 日韩欧乱色一区二区三区在线| 蜜臀久久99精品久久久久宅男| 亚洲精品123区| 国产精品丝袜xxxxxxx| 亚洲丝袜美腿一区| 欧美久久亚洲| 国产精品毛片久久| 国产日韩电影| 99视频一区| 欧美在线看片| 国产精品13p| 色婷婷久久久| 亚洲综合专区| 蜜桃国内精品久久久久软件9| 日本免费一区二区视频| 国产麻豆精品| 99精品小视频| 日韩av资源网| 麻豆精品国产91久久久久久| 99久久亚洲精品蜜臀| 五月激激激综合网色播| 成人亚洲精品| 日韩精品视频网站| 日本免费久久| 国产欧美亚洲一区| 夜夜精品视频| 91视频精品| 亚洲区第一页| 亚洲va中文在线播放免费| 国产女优一区| 精品视频97| 美女精品在线观看| 久久久久久自在自线| 一本一道久久a久久精品蜜桃| 国产精品一区二区中文字幕| 日韩午夜av| 成人在线视频区| 日韩av资源网| 先锋亚洲精品| 麻豆视频在线看| 国产欧美一区二区精品久久久 | 欧美91在线| 国产一区二区亚洲| 国产欧美日韩一区二区三区四区| 亚洲成人精品| 国产资源在线观看入口av| 欧美日一区二区在线观看| 神马久久午夜| 另类专区亚洲| 成人精品视频| 国产一区二区三区不卡av | 欧美日韩免费观看视频| 欧美激情网址| 国产精品一区二区三区www| 日本亚州欧洲精品不卡| 蜜臀久久99精品久久久久宅男| 亚洲自拍另类| 老牛影视一区二区三区| 麻豆91精品| 日韩专区在线视频| 久久国产亚洲| 在线一区欧美| 亚洲精品美女91| 日韩1区2区日韩1区2区| 国产精品第十页| 国产成年精品| 欧美va亚洲va日韩∨a综合色| 在线天堂中文资源最新版| 欧美色图国产精品| 精品视频97| 亚洲一区二区日韩| 国产精品videossex| 国产精品v一区二区三区| 精品国产18久久久久久二百| 久久久久久自在自线| 香蕉视频亚洲一级| 国产精品日韩| 国产精品日韩精品在线播放| 国产精品蜜芽在线观看| 国产精品99一区二区| 日韩专区欧美专区| 国产精品对白久久久久粗| 久久精品免费一区二区三区 | 视频一区日韩精品| 麻豆国产欧美一区二区三区| 99久久www免费| 91精品国产自产观看在线| 一本大道色婷婷在线| 亚洲精品观看| 香蕉人人精品| 国产精品www.| 三级在线观看一区二区| 亚洲播播91| 国产精品一区二区美女视频免费看| 欧美aa在线观看| 国产日韩高清一区二区三区在线 | 激情欧美丁香| 日韩国产欧美在线播放| 99精品电影| 97精品国产一区二区三区| 亚洲欧美在线专区| 99热精品久久| 亚洲人成在线网站| 成人台湾亚洲精品一区二区| 日本电影久久久| 成人av二区| 久久精品国产99久久| 精品久久不卡| 国产亚洲欧美日韩在线观看一区二区| 狠狠久久婷婷| 一区在线免费| 97精品视频在线看| 久久99青青| 久久不见久久见免费视频7| 亚洲毛片在线| 亚洲久久视频| 亚洲欧洲美洲国产香蕉| 免费视频久久| 日韩一级网站| 好看不卡的中文字幕| 91精品高清| 亚洲欧美日韩一区在线观看| 久久国产精品久久w女人spa| 欧美综合二区| 亚洲精品影视| 日韩高清一区二区|