zoukankan      html  css  js  c++  java
  • socket 发送信息和接收信息 多用于银行通信

    /**
    	 *  发送请求报文 
    	 *  注:不可以关闭流 否则会关闭对应的socket
    	 */
    	public static void send(Socket socket, byte[] msg) {
    	   DataOutputStream out=null;
    		try {
    			out = new DataOutputStream((socket.getOutputStream()));
    			out.write(msg);
    			out.flush();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    
    
    	/**
    	 *  接收服务器返回的报文
    	 *  注:不可以关闭流 否则会关闭对应的socket 
    	 */
    	public static byte [] incept(Socket socket) {
    		byte [] head = new byte[4];
    		byte [] body=null;
    		try {
    			BufferedInputStream bufIn = new BufferedInputStream(socket.getInputStream());
    			bufIn.read(head);
    			int len1 = Integer.parseInt(new String(head));
    			body = new byte[len1];
    			bufIn.read(body);
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		  return body;
    	}
    	


    简单的socket 示例

    Socket  service
    ServerSocket ss = new ServerSocket(8099);
    System.out.println("服务器已启动,等到客户端的连接...");
    Socket socket = ss.accept(); // 服务器收到客户端的数据后,创建与此客户端对话的Socket
    DataInputStream in = new DataInputStream(socket.getInputStream());
    System.out.println("服务器接受到客户端的连接请求:" + in.readUTF());// 用于接收客户端 发来的数据的输入流
    DataOutputStream out = new DataOutputStream(socket.getOutputStream());
    String sb="hello client";
    out.writeUTF(sb.toString());//服务器响应给客户端
    socket.close(); 	
    ss.close();
    
    Socket client
    Socket socket = new Socket();
    socket.connect(new InetSocketAddress("localhost",8099),1000);
    socket.setSoTimeout(400);
    System.out.println("客户端正在连接...");
    DataOutputStream out = new DataOutputStream(socket.getOutputStream());
    String result = "hello service";
    out.writeUTF(result);//把报文结构发送到服务器端
    DataInputStream in = new DataInputStream(socket.getInputStream());  
    String res = in.readUTF();//读取服务器端返回xml
    System.out.println("读取服务器返回数据:"+res);
    socket.close();

    TCP/IP 通信又叫socket 通信,是基于TCP/IP协调面向连接的一个数据传输技术。
    是属于OSI国际标准的传输层,三次握手 提供数据,有序,安全,端到端的传输和接收。
    它有三个主要协议:传输控制协议(TCP),用户数据包协议(UDP)和互联网控制消息协议(ICMP)。
    通过socket 连接,建立起一条网络线路,数据就可以流通了。包括短连接,和长连接
    两种情况,短连接:在每一次建立连接传输完报文后,就会断开,
    长连接:在每一次建立连接传输完报文后,并不会断开,需要不断的发送检测包来保持socket
    线程的连接状态。
     java语言已经对socket 通信做了很好的封装,在java.net.*包下。
     建立socket 通信需要如下步骤:
      服务器端:
      第一步:服务器开启服务监听到某个端口。
      第二步:服务器接收客户端连接
      第三步:读取客户端请求报文
      第四步:返回报文到客户端
      客户端:
      第一步:建立socket通信,访问某一个服务器IP和监听端口
      第二步:发送请求报文
      第三步:读取服务器端返回的数据报文


  • 相关阅读:
    [APIO 2009] Atm
    Codeforces518 D. Ilya and Escalator
    [POJ2096] Collecting bugs
    [ZOJ3329] One Person Game
    [LightOJ1038] Race to 1 Again
    「NOI2003」逃学的小孩
    [HAOI2006] 旅行
    ☆ [POJ2411] Mondriaan's Dream 「状压DP」
    「POJ3311」Hie with the Pie
    「乘法逆元」 学习笔记
  • 原文地址:https://www.cnblogs.com/java20130726/p/3218317.html
Copyright © 2011-2022 走看看