作者yoyojackson (JiSon)
看板java
標題[問題] Socket Inputstream
時間Thu May 12 20:10:48 2016
我的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
→ tomoyaken14: accept() 在迴圈外面 05/12 23:42
→ yoyojackson: 我的accept()是在迴圈外沒錯喔 05/13 00:11
→ k70430: 一樓是說,你的accept要放在while(ture) 裡面 05/13 00:18
→ k70430: while(true)裡才行 05/13 00:18
→ yoyojackson: 喔喔 是那意思喔 可是這個我也試過了 05/13 00:51
→ yoyojackson: 這樣的話Client端還要在主動重新連線一次挨 05/13 00:51
→ yoyojackson: 不能不重連嗎 還是本來就要讀一次重連一次 05/13 00:52
→ k70430: 你的getInputStream也要放迴圈裡,才能連線後一直讀啊 05/13 07:59
→ k70430: 而且你的code不完整,不太好判斷你的shut和re做了什麼 05/13 07:59
→ k70430: 你要回傳訊息給你的Client,它才知道要丟新的訊息給Server 05/13 08:01
→ k70430: 不太好說,你直接找基本的socket範例研究一下吧 05/13 08:05