Re: [問題] Socket Inputstream

看板java作者 (LaPass)時間8年前 (2016/05/13 11:15), 編輯推噓3(302)
留言5則, 4人參與, 最新討論串2/2 (看更多)
關鍵是你必須要開新執行緒去處理socket讀寫的動作 概念上是,有一條執行緒給ServerSocket專門做接受連線的動作 另外的執行緒專門對socket進行讀寫 寫出來的code應該會長的像這樣 class 讀寫socket的物件 imp...忘了怎麼拼 Runnable{ Socket socket; 讀寫socket的物件(Socket socket){this.socket=socket;} public void run(){ //TODO 對socket讀寫的動作copy到這裡 } } while(true){ serverSocket = new ServerSocket(1234); socket = serverSocket.accept(); new Thread(new 讀寫socket的物件(socket)).start(); } ※ 引述《yoyojackson (JiSon)》之銘言: : 我的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), 來自: 125.227.87.115 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1463109349.A.E9F.html

05/14 02:00, , 1F
Java沒有select這種東西可以用嗎?
05/14 02:00, 1F

05/14 16:54, , 2F
有,要用那個也可以。
05/14 16:54, 2F

05/15 23:21, , 3F
請問accept放在迴圈裡那這樣代表client端也必須要
05/15 23:21, 3F

05/15 23:22, , 4F
不停的發送連線需求嗎
05/15 23:22, 4F

06/20 22:58, , 5F
原來這裡有文 我明天再來研究
06/20 22:58, 5F
文章代碼(AID): #1NDKRbwV (java)
討論串 (同標題文章)
文章代碼(AID): #1NDKRbwV (java)