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

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

淺談java socket的正確關閉姿勢

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

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

例如:

java.net.SocketException:socket is closed

錯誤提示的出現場景:

自己主動關閉了socket,但是之后還從里面讀寫數據

Software caused connection abort: socket write error

錯誤提示的出現場景:

對方已經關閉socket,依舊向對方寫數據

connection reset (by peer)

錯誤提示出現的場景:

一端socket被關閉,另一端仍然發送數據,發送的第一個數據包 connection reset by peer

一端socket退出,退出時為關閉連接,另一端讀數據 connection reset

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

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

即當一方寫入完成后,調用shutdownOutput關閉輸出流,這時候對方的read方法就會返回-1,這時候對方就知道你寫完了,對方可以關閉輸入流,然后等待對方寫入完成調用shutdownOutput后己方再調用shutdownInput,雙方就正常關閉了輸入輸出流,這時候socket就不會出現異常了。

下面是一個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 - 半關閉

通常,使用關閉輸出流來表示輸出已經結束。但在進行網絡通信時則不能這樣做。因為我們關閉輸出流時,該輸出流對應的Socket也將隨之關閉,這樣程序將無法再從該socket中讀取數據。

為了應付這種情況,socket提供了兩個半關閉的方法用來只關閉socket的輸入流或者輸出流,用以表示輸出數據已經發送完成。

方法詳情:

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

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

當調用shutdownInput()或shutdownOutput()方法關閉輸入流或輸出流后,該socket處于半關閉狀態。

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

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

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

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产日韩三级| 亚洲精品国模| 日韩高清一区二区| 一区二区电影在线观看| 亚洲精品1区2区| 91精品一区国产高清在线gif | 久久精品亚洲人成影院| 中文字幕成在线观看| 欧美黄色精品| 嫩草伊人久久精品少妇av杨幂| 日韩中文字幕亚洲一区二区va在线 | 蜜桃久久久久久| 免费成人性网站| 日韩亚洲精品在线观看| 日本不卡一二三区黄网| 国产欧美大片| 日韩电影免费在线观看| 久久久人人人| 国产精品毛片| 亚洲区国产区| 欧美国产日本| 成人自拍av| 亚洲在线观看| 欧美在线91| 欧美韩日一区| 亚洲欧美日本国产专区一区| 免费在线成人网| 国产精品亚洲片在线播放| 麻豆91在线播放| 91精品蜜臀一区二区三区在线| 视频一区在线播放| 国产伊人久久| 麻豆亚洲精品| 精品亚洲精品| 欧美亚洲精品在线| 国产精品资源| 精品一区在线| 久久亚洲人体| 免费不卡在线视频| 日韩精品不卡一区二区| 蜜臀91精品一区二区三区| 欧美成人一二区| 一本一本久久| 国产精品videossex久久发布| 激情综合网站| 国产极品嫩模在线观看91精品| 亚洲午夜精品久久久久久app| 91成人精品在线| 男人的天堂久久精品| 日韩av福利| 91精品在线免费视频| 鲁大师成人一区二区三区| 午夜精品成人av| 精品国产鲁一鲁****| 91成人在线| 亚洲精品系列| 视频一区视频二区中文| 欧美色图一区| 久久精品电影| 播放一区二区| 成人一区而且| 老色鬼精品视频在线观看播放| 亚洲精品激情| 奇米亚洲欧美| 久久国产乱子精品免费女| 亚洲91在线| 亚洲va久久| 欧美一区在线观看视频| 91欧美极品| 国产欧美视频在线| 国产精品igao视频网网址不卡日韩| 日韩久久一区| 国产麻豆一区二区三区精品视频| 久久国产精品免费一区二区三区| 91大神在线观看线路一区| 日韩国产成人精品| 日韩国产欧美一区二区三区| 欧美日韩精品一区二区三区在线观看| 视频精品一区| 欧美精品中文字幕亚洲专区| 国产精品二区影院| 国产一区三区在线播放| 久久九九电影| 一级欧洲+日本+国产| 天使萌一区二区三区免费观看| 亚洲欧洲日韩| 美女精品久久| 美女久久久久| 91麻豆精品| 国产在线|日韩| 亚洲一区二区毛片| 国产精品亚洲片在线播放| 欧洲av不卡| 日本成人一区二区| 蜜桃av.网站在线观看| 免费在线观看精品| 国产一区2区| 亚洲在线网站| 国产精品一区二区99| 91精品精品| 国产精品久久久久久久久久久久久久久| 成人羞羞视频播放网站| 日本不卡不码高清免费观看| 视频福利一区| 欧美国产不卡| 午夜亚洲福利| 国产亚洲精品v| 成人影视亚洲图片在线| 亚洲综合激情在线| 亚洲福利国产| 国产aⅴ精品一区二区四区| 亚洲毛片网站| 日韩不卡在线| 精品欧美日韩精品| 日韩精品一页| 国产精品三上| 日韩精品久久久久久久电影99爱 | 欧美亚洲网站| 性色av一区二区怡红| 国产专区一区| 性感美女一区二区在线观看| 国产精品一级| 欧美中文一区| 亚洲另类av| 亚洲青青久久| 亚洲欧美网站在线观看| 日韩午夜在线| 免费日韩一区二区| 日韩视频免费| 国产亚洲精品久久久久婷婷瑜伽| 亚洲va在线| 国产在线不卡| av亚洲在线观看| 免费精品国产| 影院欧美亚洲| 色综合视频一区二区三区日韩| 亚洲丝袜啪啪| 日韩精品亚洲专区| 国产亚洲字幕| 国产精品网站在线看| 欧美一区久久| 精品一区电影| 亲子伦视频一区二区三区| 久久久噜噜噜| 亚洲欧美日韩国产一区| 亚洲我射av| 国产剧情一区二区在线观看| 精品午夜视频| 日韩毛片在线| 热久久免费视频| 免费一级欧美片在线观看网站| 国产一区二区三区亚洲| 91精品蜜臀一区二区三区在线| 极品日韩av| 欧美一区=区三区| 91亚洲国产| 亚洲一区国产| 久久成人福利| 午夜国产一区二区| 久久国产精品色av免费看| 国产精品a久久久久| 久久精品亚洲人成影院| 中文字幕免费一区二区| 中文在线资源| 日本aⅴ免费视频一区二区三区| 国产精品**亚洲精品| 国产视频亚洲| 精品一区二区三区在线观看视频| 999久久久91| 日韩精品久久久久久久软件91| 四虎成人av| 欧美综合社区国产| 亚洲精华国产欧美| 麻豆久久一区| 一区二区三区四区在线观看国产日韩| 卡一卡二国产精品| 91久久中文| 久久国产精品免费一区二区三区| 国内亚洲精品| 精品久久久网| 欧美日韩a区| 国产视频亚洲| 日韩精品不卡一区二区| 麻豆高清免费国产一区| 亚洲另类视频| 欧美粗暴jizz性欧美20| 国产欧美日韩精品高清二区综合区| 图片区亚洲欧美小说区| 久久久久久自在自线| 精品欧美日韩精品| 欧美视频二区| 日韩av网站在线观看| 免费成人av在线播放| 在线成人直播| 国产99久久久国产精品成人免费| 福利片在线一区二区 | 国产精品sss在线观看av| 国产精品777777在线播放| 国产精品s色| 鲁鲁在线中文|