socket通信

    xiaoxiao2021-03-25  103

    package test; import hua.client.TestWebServiceDelegate; import hua.client.TestWebServiceService; public class TestClient { public static void main(String[] args) { TestWebServiceDelegate pro1 = new TestWebServiceService().getTestWebServicePort(); String reslut = pro1.getValue("001", "0201084545", "TM001", "张三", "处长"); System.out.println(reslut); } }

    上次做了一个Java socket一对一通信的例子这次来写一个一对多的通信,这里我们使用Java的多线程来实现

    首先来看一下服务类

    [java]  view plain  copy /**   *    */   package com.dnion.socket;      import java.io.IOException;   import java.net.ServerSocket;   import java.net.Socket;      /**   ***************************************************************    * 项目名称:JavaThread   * 程序名称:MultiJabberServer   * 日期:2012-8-23 下午02:38:20   * 作者:   * 模块:   * 描述:   * 备注:   * ------------------------------------------------------------   * 修改历史   * 序号               日期              修改人       修改原因   *    * 修改备注:   * @version    ***************************************************************   */   public class MultiJabberServer {                 /**       * 方法名:main       * 描述:       * 作者:       * 日期:2012-8-23 下午02:38:20       * @param @param args       * @return void       */       public static void main(String[] args) {           ServerSocket s = null;           Socket socket  = null;           try {               s = new ServerSocket(8080);               //等待新请求、否则一直阻塞               while(true){                   socket = s.accept();                   System.out.println("socket:"+socket);                   new ServeOneJabbr(socket);                                  }           } catch (Exception e) {               try {                   socket.close();               } catch (IOException e1) {                   // TODO Auto-generated catch block                   e1.printStackTrace();               }           }finally{               try {                   s.close();               } catch (IOException e) {                   // TODO Auto-generated catch block                   e.printStackTrace();               }           }                     }      }  

    接着我们要写一个服务端响应请求的类也就是一个socket

    [java]  view plain  copy /**   *    */   package com.dnion.socket;      import java.io.BufferedReader;   import java.io.BufferedWriter;   import java.io.IOException;   import java.io.InputStreamReader;   import java.io.OutputStreamWriter;   import java.io.PrintWriter;   import java.net.Socket;      /**   ***************************************************************    * 项目名称:JavaThread   * 程序名称:ServeOneJabbr   * 日期:2012-8-23 下午02:34:13   * 作者:   * 模块:   * 描述:   * 备注:   * ------------------------------------------------------------   * 修改历史   * 序号               日期              修改人       修改原因   *    * 修改备注:   * @version    ***************************************************************   */   public class ServeOneJabbr extends Thread{          private Socket socket = null;       private BufferedReader br = null;       private PrintWriter pw = null;              public ServeOneJabbr(Socket s){           socket = s;           try {               br = new BufferedReader(new InputStreamReader(socket.getInputStream()));               pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);               start();           } catch (Exception e) {                              e.printStackTrace();           }       }              @Override       public void run() {           while(true){               String str;               try {                   str = br.readLine();                   if(str.equals("END")){                       br.close();                       pw.close();                       socket.close();                       break;                   }                   System.out.println("Client Socket Message:"+str);                   pw.println("Message Received");                   pw.flush();               } catch (Exception e) {                   try {                       br.close();                       pw.close();                       socket.close();                   } catch (IOException e1) {                       // TODO Auto-generated catch block                       e1.printStackTrace();                   }               }           }       }                        }   接下来利用我们上一次的客户端socket

    [java]  view plain  copy /**   *    */   package com.dnion.socket;      import java.io.BufferedReader;   import java.io.BufferedWriter;   import java.io.IOException;   import java.io.InputStreamReader;   import java.io.OutputStreamWriter;   import java.io.PrintWriter;   import java.net.Socket;      /**   ***************************************************************    * 项目名称:JavaThread 程序名称:JabberClient 日期:2012-8-23 下午01:47:12    * 作者:   * 模块:    * 描述:    * 备注:   * ------------------------------------------------------------    * 修改历史   * 序号   * 日期   * 修改人   * 修改原因   * 修改备注:   *    * @version   ***************************************************************    */   public class JabberClient {          /**       * 方法名:main 描述: 作者:白鹏飞 日期:2012-8-23 下午01:47:12       *        * @param @param args       * @return void       */       public static void main(String[] args) {           Socket socket = null;           BufferedReader br = null;           PrintWriter pw = null;           try {               //客户端socket指定服务器的地址和端口号               socket = new Socket("127.0.0.1", JabberServer.PORT);               System.out.println("Socket=" + socket);               //同服务器原理一样               br = new BufferedReader(new InputStreamReader(                       socket.getInputStream()));               pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(                       socket.getOutputStream())));               for (int i = 0; i < 10; i++) {                   pw.println("howdy " + i);                   pw.flush();                   String str = br.readLine();                   System.out.println(str);               }               pw.println("END");               pw.flush();           } catch (Exception e) {               e.printStackTrace();           } finally {               try {                   System.out.println("close......");                   br.close();                   pw.close();                   socket.close();               } catch (IOException e) {                   // TODO Auto-generated catch block                   e.printStackTrace();               }           }       }      }  
    转载请注明原文地址: https://ju.6miu.com/read-20348.html

    最新回复(0)