服务器监听、并接收每个客户端的信息再群发到每个客户端
服务端
[java]
package com.java.xiong.Net17;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
public class RunableSocket implements Runnable {
// 定义当前线程处理的Socket
private Socket socket = null;
// 该线程对用的输入流
private BufferedReader read = null;
public RunableSocket(Socket s) throws IOException {
this.socket = s;
read = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
}
@Override
public void run() {
String line=null;
try{
while((line=getClentData())!=null){
for(Socket s:MyServer.list){
//向每个客户端输出信息
PrintStream print=new PrintStream(s.getOutputStream());
print.println(line);
}
}
}catch(IOException io){
io.printStackTrace();
}
}
//读取客户端数据的方法
public String getClentData(){
String line=null;
try{
line=read.readLine();
}catch(IOException io){
MyServer.list.remove(socket);
}
return line;
}
}
[java]
package com.java.xiong.Net17;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
public class MyServer {
public static List<Socket> list=new ArrayList<Socket>();
public static void main(String [] args) throws Exception{
ServerSocket server=new ServerSocket(30001);
while(true){
Socket scoket=server.accept();
list.add(scoket);
new Thread(new RunableSocket(scoket)).start();
}
}
}
客户端
[java]
package com.java.xiong.Net17;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
//将服务器返回的数据打印出来
public class RubableClient implements Runnable {
private Socket socket;
private BufferedReader read;
public RubableClient(Socket socket) throws IOException {
this.socket = socket;
this.read = new BufferedReader(new InputStreamReader(
this.socket.getInputStream()));
}
@Override
public void run() {
try{
String line=null;
while((line=read.readLine())!=null){
System.out.print(line);
}
}catch(IOException io){
io.printStackTrace();
}
}
}
[java]
package com.java.xiong.Net17;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class MyClient {
public static void main(String[] args) throws Exception, IOException {
//向服务器发送请求
Socket socket = new Socket("127.0.0.1", 30001);
new Thread(new RubableClient(socket)).start();
//获取输出流
PrintStream print = new PrintStream(socket.getOutputStream());
String line = "";
BufferedReader read = new BufferedReader(new InputStreamReader(
System.in));
while((line=read.readLine())!=null){
//写入Socket对应的输出流
print.println(line);
}
}
}