现在的位置: 首页 > 综合 > 正文

java学习小笔记(三.socket通信)

2014年02月15日 ⁄ 综合 ⁄ 共 1974字 ⁄ 字号 评论关闭

三,socket通信
1.http://blog.csdn.net/kongxx/article/details/7288896这个人写的关于socket通信不错,循序渐进式的讲解,用代码示例说明,运用流和socket进行远程通讯

2.最简单的socket是一个服务端对应一个客户端
 server的写法

  1. ServerSocket server = new ServerSocket(10000);  
  2.         Socket socket = server.accept();  
  3.         BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));  
  4.         PrintWriter out = new PrintWriter(socket.getOutputStream());  
  5.           
  6.         while (true) {  
  7.             String msg = in.readLine();  
  8.             System.out.println(msg);  
  9.             out.println("Server received " + msg);  
  10.             out.flush();  
  11.             if (msg.equals("bye")) {  
  12.                 break;  
  13.             }  
  14.         }  
  15.         socket.close(); 

 
client的写法

  1. Socket socket = new Socket("localhost"10000);  
  2.         BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));  
  3.         PrintWriter out = new PrintWriter(socket.getOutputStream());  
  4.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));  
  5.   
  6.         while (true) {  
  7.             String msg = reader.readLine();  
  8.             out.println(msg);  
  9.             out.flush();  
  10.             if (msg.equals("bye")) {  
  11.                 break;  
  12.             }  
  13.             System.out.println(in.readLine());  
  14.         }  
  15.         socket.close(); 

3.复杂一点的就是多个客户端同时访问服务器。在客户端使用循环启动多个客户端访问同一服务端,在服务端只要server.accept()一接收到就新建线程,然后把把上面的读写操作放进线程内处理。

4.如果要利用socke传递对象,就要让对象实现Serializable 序列化接口,使用ObjectInputStream和ObjectOutputStream进行序列化和反序列化
server的写法

  1.  ObjectInputStream is = null;  
  2.                 ObjectOutputStream os = null;  
  3.                 try {  
  4.                     is = new ObjectInputStream(new BufferedInputStream(socket.getInputStream()));  
  5.                     os = new ObjectOutputStream(socket.getOutputStream());  
  6.   
  7.                     Object obj = is.readObject();  
  8.                     User user = (User)obj;  
  9.                     System.out.println("user: " + user.getName() + "/" + user.getPassword());  
  10.   
【上篇】
【下篇】

抱歉!评论已关闭.