关键是你必须要开新执行绪去处理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());
: }