本文之初,道声张老师一路走好,您给我们留下的不止那么几本书,几个视频……

  财政局和市民卡公司有个对账业务,在这个业务中需要用到socket传送一些报文内容,主要传送的是对账文件名以及队长文件内容签名加密后的内容。

在socket部分的代码完成过程中,遇到了一些问题,本想好好整理下发出来,但无奈整合能力太差,先来最基本的……  

=================正文=================

1、所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。

操作java socket时用到的最多的三个方法为:

  accept():主要用于服务器端产生“阻塞”,等待客户端的链接请求,并且返回一个客户端的Socket实例;

  getInputStream():方法主要用来获得网络连接输入,同时返回一个InputStream对象实例;

  getOutputStream():方法和上面的getInputStream相反。

2、一般要建立JavaSocket连接,应首先明确服务器端和客户端,服务器端使用ServerSocket监听指定的端口,使用accept等待客户端请求,链接链接,开始会话、完成会话后,关闭链接。(注意,一般socket的关闭都应该是服务器端来进行的,后面说);客户端使用Socket对网络中的某个服务器的某个端口发出链接请求,连接成功,开始会话,会话完成,Socket关闭。

2、示例代码:

  服务器端:

 
  
  1. View Code   
  2.  
  3. package com.icer.server;  
  4.  
  5. import java.io.BufferedReader;  
  6. import java.io.IOException;  
  7. import java.io.InputStreamReader;  
  8. import java.io.OutputStream;  
  9. import java.io.PrintWriter;  
  10. import java.net.ServerSocket;  
  11. import java.net.Socket;  
  12.  
  13. /**  
  14.  * Server  
  15.  *   
  16.  * @author Icer  
  17.  *   
  18.  */ 
  19. public class Server {  
  20.  
  21.     private ServerSocket ss;  
  22.     private Socket s;  
  23.     private BufferedReader br;  
  24.     private PrintWriter pw;  
  25.  
  26.     public Server() {  
  27.         try {  
  28.                 ss = new ServerSocket(10000);  
  29.                 System.out.println("Server is starting...");  
  30.                 s = ss.accept();  
  31.                 br = new BufferedReader(new InputStreamReader(s.getInputStream()));  
  32.                 pw = new PrintWriter(s.getOutputStream(),true);  
  33.                 String line = br.readLine();  
  34.                 System.out.println(line);  
  35.                 pw.println("your word is:" + line);  
  36.                 //pw.println("helloworld");  
  37.                 br.close();  
  38.                 pw.close();  
  39.  
  40.         } catch (IOException ie) {  
  41.             ie.printStackTrace();  
  42.         }  
  43.  
  44.     }  
  45.  
  46.     public static void main(String[] args) throws Exception {  
  47.         new Server();  
  48.     }  

客户端:

 
  
  1. View Code   
  2.  package com.icer.client;  
  3.    
  4.  import java.io.BufferedReader;  
  5.  import java.io.File;  
  6.  import java.io.FileInputStream;  
  7.  import java.io.IOException;  
  8.  import java.io.InputStreamReader;  
  9.  import java.io.PrintWriter;  
  10.  import java.net.Socket;  
  11.    
  12.  /**  
  13.   * Client  
  14.   * @author Icer  
  15.   *  
  16.   */ 
  17.  public class Client {  
  18.        
  19.      private Socket s;  
  20.      private BufferedReader br;  
  21.      //private BufferedReader line;  
  22.      private PrintWriter pw;  
  23.      private String line = "";  
  24.      public Client() {  
  25.          try{  
  26.              s = new Socket("127.0.0.1",10000);  
  27.              pw = new PrintWriter(s.getOutputStream(),true);  
  28.              br = new BufferedReader(new InputStreamReader(s.getInputStream()));  
  29.              pw.println("hello");  
  30.              line = br.readLine();  
  31.              System.out.println(line);  
  32.                
  33.              br.close();  
  34.              pw.close();  
  35.          }catch(IOException ie){  
  36.              ie.printStackTrace();  
  37.          }  
  38.      }  
  39.      public static void main(String[] args) throws Exception {  
  40.          new Client();  
  41.      }  
  42.  } 

再说socket