作者LaPass (LaPass)
看板java
標題Re: [問題] Socket Inputstream
時間Fri May 13 11:15:46 2016
關鍵是你必須要開新執行緒去處理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
推 ah7675: Java沒有select這種東西可以用嗎? 05/14 02:00
→ LaPass: 有,要用那個也可以。 05/14 16:54
推 yoyojackson: 請問accept放在迴圈裡那這樣代表client端也必須要 05/15 23:21
→ yoyojackson: 不停的發送連線需求嗎 05/15 23:22
推 angelina877: 原來這裡有文 我明天再來研究 06/20 22:58