[問題] Socket Inputstream

看板java作者 (JiSon)時間9年前 (2016/05/12 20:10), 編輯推噓0(0011)
留言11則, 3人參與, 最新討論串1/2 (看更多)
我的Server Socket連上線並取得Inputstream後 第一次read()讀取時有等待輸入流的資料 也有成功讀取到client送來的資料 但是第二次read卻沒等待 直接記續往下執行 無法收到資料 怎麼試都不行 code如下 try { serverSocket = new ServerSocket(1234); socket = serverSocket.accept(); System.out.println("Connceted"); is = socket.getInputStream(); while(true) { byte[] data = new byte[4096]; Integer i = is.read(data,0,4096); if(i>=0) { command = new String(data,0,i); if(command.equals("Shutdown"))shut(); if(command.equals("Restart"))re(); }else {} } //////////////////////////////////////////////////////// } catch(Exception ex) { System.out.println(ex.toString()); } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.173.148.66 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1463055051.A.121.html

05/12 23:42, , 1F
accept() 在迴圈外面
05/12 23:42, 1F

05/13 00:11, , 2F
我的accept()是在迴圈外沒錯喔
05/13 00:11, 2F

05/13 00:18, , 3F
一樓是說,你的accept要放在while(ture) 裡面
05/13 00:18, 3F

05/13 00:18, , 4F
while(true)裡才行
05/13 00:18, 4F

05/13 00:51, , 5F
喔喔 是那意思喔 可是這個我也試過了
05/13 00:51, 5F

05/13 00:51, , 6F
這樣的話Client端還要在主動重新連線一次挨
05/13 00:51, 6F

05/13 00:52, , 7F
不能不重連嗎 還是本來就要讀一次重連一次
05/13 00:52, 7F

05/13 07:59, , 8F
你的getInputStream也要放迴圈裡,才能連線後一直讀啊
05/13 07:59, 8F

05/13 07:59, , 9F
而且你的code不完整,不太好判斷你的shut和re做了什麼
05/13 07:59, 9F

05/13 08:01, , 10F
你要回傳訊息給你的Client,它才知道要丟新的訊息給Server
05/13 08:01, 10F

05/13 08:05, , 11F
不太好說,你直接找基本的socket範例研究一下吧
05/13 08:05, 11F
文章代碼(AID): #1ND7BB4X (java)
討論串 (同標題文章)
文章代碼(AID): #1ND7BB4X (java)