------------------------------------------
加入多線程
------------------------------------------
MyServer
public static ArrayList<Socket> socketList = new ArrayList<Socket>();
ServerSocket ss = new ServerSocket(30000);
Socket s = ss.accept();
socketList.add(s);
//將獲取的socket交給線程類處理
new Thread(new ServerThread(s)).start();
ServerThread
public class ServerThread implements Runnable{
Socket s = null;
BufferedReader br = null;
public ServerThread(Socket s) throws IOException{
this.s = s;
br = new BufferedReader(new InpuStreamReader(s.getInputStream));
}
public void run(){
try{
String content = null;
while(null != (content = readFromClient())){
for(Socket s : MyServer.socketList){
PrintStream ps = new PrintStream
(s.getOutputStream());
ps.println(content);
}
}
}catch(IOException e){
}
}
public String readFromClient{
try{
return br.readLine();
}catch (IOException e){
MyServer.socketList.remove(s);
}
return null;
}
}
MyClient
Socket s = new Socket("127.0.0.1",30000);
//讀取ServerSocket發來的數據
new Thread(new ClientThread(s)).start();
//以下代碼用於向ServerSocket發送數據
PrintStream ps = new PrintStream(s.getOutputStream());
String line = null;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while(null!=(line=br.readLine())){
ps.println(line);
}
ClientThread
public class ClientThread implements Runnable{
private Socket s;
BufferedReader br = null;
public ClientThread(Socket s)throws IOException{
this.s = s;
br = new BufferedReader(
new InputStreamReader(s.getInputStream));
}
public void run(){
try{
String content = null;
while(null!=(content = br.readLine())){
System.out.println(content);
}
}catch (Exception e){
e.printStackTrace();
}
}
}