一个比较成熟的Socket实例
2012-06-09 23:43
295 查看
废话不多说...直接看代码
服务器端...
Server.java
getMessage.java
客户端
Client.java
ClientgetMessage.java
-----------------------------------程序员 闫帆原创---------------------------------------
转载请注明原创人信息 程序员 闫帆yanfanvip
服务器端...
Server.java
package test; import java.net.ServerSocket; import java.net.Socket; public class Server { public static ServerSocket ss; int i=10000; public Server(){ try { System.out.println("监听端口:"+i); ss = new ServerSocket(i); Socket socket = ss.accept(); Socket_List.setSocket(i, socket); System.out.println("在端口 "+i+" 有新连接:"+Socket_List.getSocket(i).getRemoteSocketAddress()); new Thread(new getMessage(i)).start(); } catch (Exception e) { System.out.println("连接客户端异常"+e.getMessage()); } } public static void main(String[] args) { new Server(); } }Socket_list.java
package test; import java.net.Socket; import java.util.HashMap; import java.util.Map; public class Socket_List { private static Map<Integer, Socket> map= new HashMap<Integer, Socket>(); private static Socket_List list; public static Socket_List getThis() { if(list==null) list= new Socket_List(); return list; } public static Socket getSocket(int i) { return map.get(i); } public static void setSocket(int i,Socket socket) { map.put(i, socket); } }
getMessage.java
package test; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; public class getMessage implements Runnable{ private int i=0; public static String getMessages(int id) throws Exception { BufferedReader reader=new BufferedReader(new InputStreamReader(Socket_List.getSocket(id).getInputStream())); return reader.readLine(); } public static void sendMessages(int id,String message) throws Exception { PrintWriter send=new PrintWriter(Socket_List.getSocket(id).getOutputStream()); send.println(message); send.flush(); } public getMessage(int i) { this.i=i; } @Override public void run() { try { while(true) { String Message=getMessages(i); System.out.println("来自"+Socket_List.getSocket(i).getRemoteSocketAddress()+"的信息:"+Message); sendMessages(i, Message); System.out.println("向客户端发送信息:"+Message); } } catch (Exception e) { try { System.out.println("客户端"+Socket_List.getSocket(i).getRemoteSocketAddress()+"断开连接~!"); Socket_List.getSocket(i).close(); Server.ss.close(); new Server(); } catch (Exception e1) { System.out.println("未能正常关闭Socket!~"); } } } }
客户端
Client.java
package test; import java.net.Socket; public class Client { int i=10000; public Client(){ try { Socket client=new Socket("127.0.0.1",i); System.out.println("已连接"+i); new Thread(new ClientgetMessage(client)).start(); } catch (Exception e) { System.out.println("未能连接到服务器"+e.getMessage()); } } public static void main(String[] args) { new Client(); } }
ClientgetMessage.java
package test; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; public class ClientgetMessage implements Runnable{ private Socket socket; public ClientgetMessage(Socket socket) { this.socket=socket; } public void run() { new Thread(new getMessages(socket)).start(); new Thread(new sendMessages(socket)).start(); } } class getMessages implements Runnable { private Socket socket; getMessages(Socket socket) { this.socket=socket; } public void run() { try { while(true) { BufferedReader reader=new BufferedReader(new InputStreamReader(socket.getInputStream())); String Message=reader.readLine(); System.out.println("来自"+socket.getRemoteSocketAddress()+"的信息:"+Message); } } catch (Exception e) { try { System.out.println("服务器"+socket.getRemoteSocketAddress()+"断开连接~!"); socket.close(); new Client(); System.exit(0); } catch (Exception e1) { System.out.println("未能正常关闭Socket!~"); } } } } class sendMessages implements Runnable { private Socket socket; sendMessages(Socket socket) { this.socket=socket; } public void run() { try { while(true) { PrintWriter send=new PrintWriter(socket.getOutputStream()); BufferedReader reader=new BufferedReader(new InputStreamReader(System.in)); send.println(reader.readLine()); send.flush(); } } catch (Exception e) { System.out.println("发送消息失败"); } } }
-----------------------------------程序员 闫帆原创---------------------------------------
转载请注明原创人信息 程序员 闫帆yanfanvip
相关文章推荐
- 一个比较简单的JQUERY密码安全性验证实例【补充】
- 一个简单的socket监听的服务器实例
- remoting与socket、web service的比较及实例
- 利用C#进行Socket通信编程之二:一个实例
- 同一个Socket实例第二次无法接收服务端数据!! (暂时占用一下首页,请多包涵,该问题困扰我两天了)
- Linux Socket编程实例(一个Hello World程序)
- 就用一个实例说明Socket是如何使用TCP的
- 利用C#进行Socket通信编程之二:一个实例
- 多个Activity之间共用一个Socket实例
- 一个WinSocket编程实例
- 一个Android Socket开发的实例
- 一个WinSocket编程实例
- .NET下Socket编程的一个实例
- 一个比较经典的C#异常处理程序实例
- Java中的接口与抽象类的比较、应用和实例 – 一个培训师不错的简洁解述
- 动态代理的一个比较优雅的实例
- Linux Socket编程实例(一个Hello World程序)
- set,bitset 的一个应用实例——数据结构和比较算法
- Linux Socket编程实例(一个Hello World程序)
- socket的一个实例