socket服务器

来源:互联网 发布:linux解压gz文件命令 编辑:程序博客网 时间:2024/06/17 10:48

//创建客户端

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();
}
}
}

}
}

原创粉丝点击