//创建客户端
import java.io.BufferedReader;
import java.io.IOException;import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class MySocket {
/**客户端
* @param args
* @throws IOException
* @throws UnknownHostException
*/
public static void main(String[] args) throws UnknownHostException, IOException {
Socket socket=new Socket("127.0.0.1",11111);
ClientThread clientThread=new ClientThread(socket);
Thread thread=new Thread(clientThread);
thread.start();
PrintWriter pr=new PrintWriter(socket.getOutputStream());
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
while (true) {
String msg=br.readLine();
pr.println(msg);
pr.flush();
}
}
}
class ClientThread implements Runnable{
private Socket socket;
public ClientThread(Socket socket) {
this.socket=socket;
}
public void run() {
try {
while (true) {
BufferedReader brr = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String msg=brr.readLine();
System.out.println(msg);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
//创建服务器端
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.Writer;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;
import java.util.Map;
public class MyServerSocket {
static HashMap<String,Socket> map=new HashMap<String, Socket>();
/**服务器
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
ServerSocket serverSocket=new ServerSocket(11111);
System.out.println("服务启动");
while (true) {
Socket socket = serverSocket.accept();//等待用户连接
String name="用户" + Math.round(Math.random() * 20);
map.put(name,socket);
Accept accepts=new Accept(name,socket,map);//启动多线程
Thread thread=new Thread(accepts);
thread.start();
System.out.println(name+"用户登录成功");
}
}
}
/**
*
* @author Administrator
*
*/
class Accept implements Runnable{
private Socket socket;
private String name;
private HashMap<String, Socket> map;
public Accept(String name,Socket socket,HashMap<String, Socket> map) {
this.socket=socket;
this.name=name;
this.map=map;
}
public void run() {
BufferedReader br;
try {
while (true) {
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//System.out.println(br.readLine());
String s[]=br.readLine().split(",");
sendToClient(s[0],s[1]);
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void sendToClient(String name,String msg){
for (Map.Entry<String,Socket> m : map.entrySet()) {
if (m.getKey().equals(name)) {
try {
PrintWriter pr=new PrintWriter(m.getValue().getOutputStream());
pr.println(msg);
pr.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}