`
lvwenwen
  • 浏览: 932079 次
  • 性别: Icon_minigender_1
  • 来自: 魔都
社区版块
存档分类
最新评论

Socket发送接收消息(银行通信)

阅读更多

  1. /** 
  2.      *  发送请求报文  
  3.      *  注:不可以关闭流 否则会关闭对应的socket 
  4.      */  
  5.     public static void send(Socket socket, byte[] msg) {  
  6.        DataOutputStream out=null;  
  7.         try {  
  8.             out = new DataOutputStream((socket.getOutputStream()));  
  9.             out.write(msg);  
  10.             out.flush();  
  11.         } catch (IOException e) {  
  12.             e.printStackTrace();  
  13.         }  
  14.     }  
  15.   
  16.   
  17.     /** 
  18.      *  接收服务器返回的报文 
  19.      *  注:不可以关闭流 否则会关闭对应的socket  
  20.      */  
  21.     public static byte [] incept(Socket socket) {  
  22.         byte [] head = new byte[4];  
  23.         byte [] body=null;  
  24.         try {  
  25.             BufferedInputStream bufIn = new BufferedInputStream(socket.getInputStream());  
  26.             bufIn.read(head);  
  27.             int len1 = Integer.parseInt(new String(head));  
  28.             body = new byte[len1];  
  29.             bufIn.read(body);  
  30.         } catch (IOException e) {  
  31.             e.printStackTrace();  
  32.         }  
  33.           return body;  
  34.     }  
  35.       

简单的socket 示例

 

  1. Socket  service  
  2. ServerSocket ss = new ServerSocket(8099);  
  3. System.out.println("服务器已启动,等到客户端的连接...");  
  4. Socket socket = ss.accept(); // 服务器收到客户端的数据后,创建与此客户端对话的Socket  
  5. DataInputStream in = new DataInputStream(socket.getInputStream());  
  6. System.out.println("服务器接受到客户端的连接请求:" + in.readUTF());// 用于接收客户端 发来的数据的输入流  
  7. DataOutputStream out = new DataOutputStream(socket.getOutputStream());  
  8. String sb="hello client";  
  9. out.writeUTF(sb.toString());//服务器响应给客户端  
  10. socket.close();       
  11. ss.close();  
  12.   
  13. Socket client  
  14. Socket socket = new Socket();  
  15. socket.connect(new InetSocketAddress("localhost",8099),1000);  
  16. socket.setSoTimeout(400);  
  17. System.out.println("客户端正在连接...");  
  18. DataOutputStream out = new DataOutputStream(socket.getOutputStream());  
  19. String result = "hello service";  
  20. out.writeUTF(result);//把报文结构发送到服务器端  
  21. DataInputStream in = new DataInputStream(socket.getInputStream());    
  22. String res = in.readUTF();//读取服务器端返回xml  
  23. System.out.println("读取服务器返回数据:"+res);  
  24. socket.close();  
TCP/IP 通信又叫socket 通信,是基于TCP/IP协调面向连接的一个数据传输技术。
是属于OSI国际标准的传输层,三次握手 提供数据,有序,安全,端到端的传输和接收。
它有三个主要协议:传输控制协议(TCP),用户数据包协议(UDP)和互联网控制消息协议(ICMP)。
通过socket 连接,建立起一条网络线路,数据就可以流通了。包括短连接,和长连接
两种情况,短连接:在每一次建立连接传输完报文后,就会断开,
长连接:在每一次建立连接传输完报文后,并不会断开,需要不断的发送检测包来保持socket
线程的连接状态。
 java语言已经对socket 通信做了很好的封装,在java.net.*包下。
 建立socket 通信需要如下步骤:
  服务器端:
  第一步:服务器开启服务监听到某个端口。
  第二步:服务器接收客户端连接
  第三步:读取客户端请求报文
  第四步:返回报文到客户端
  客户端:
  第一步:建立socket通信,访问某一个服务器IP和监听端口
  第二步:发送请求报文
  第三步:读取服务器端返回的数据报文
分享到:
评论

相关推荐

    iso-8583-socket-queue:ISO 8583网关

    这是用于银行/金融技术POS系统通信的免费ISO 8583网关(桥)实施。 该项目由Node.js( )提供支持。 想法 SocketQueue充当银行ISO 8583系统与需要与之交谈的客户应用程序/流程之间的网关。 该服务与银行处理主机保持...

    前置机详细设计方案.doc

    串口方式如下图所示: 接收进程负责从端口读取上送的信息,发送进程将处理结果写到通讯端口,它们与 守护进程之间通过消息队列进行数据交换。 网控器可以有多个上行与下行板,为达到并行处理的目的,对应于每个通信...

    前置机详细设计方案(1).doc

    串口方式如下图所示: 接收进程负责从端口读取上送的信息,发送进程将处理结果写到通讯端口,它们与 守护进程之间通过消息队列进行数据交换。 网控器可以有多个上行与下行板,为达到并行处理的目的,对应于每个通信...

    java源码包---java 源码 大量 实例

     在对象创建的过程中将被容器调用,onMessage函数方法接收消息参数,将其强制转型为合适的消息类型,同时打印出消息的内容。同时一个mail note将被发送给消息发送者,发送一个e-mail通知给由recipient参数确定的e-...

    java源码包2

     在对象创建的过程中将被容器调用,onMessage函数方法接收消息参数,将其强制转型为合适的消息类型,同时打印出消息的内容。同时一个mail note将被发送给消息发送者,发送一个e-mail通知给由recipient参数确定的e-...

    JAVA上百实例源码以及开源项目源代码

    设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后...

    java源码包3

     在对象创建的过程中将被容器调用,onMessage函数方法接收消息参数,将其强制转型为合适的消息类型,同时打印出消息的内容。同时一个mail note将被发送给消息发送者,发送一个e-mail通知给由recipient参数确定的e-...

    java源码包4

     在对象创建的过程中将被容器调用,onMessage函数方法接收消息参数,将其强制转型为合适的消息类型,同时打印出消息的内容。同时一个mail note将被发送给消息发送者,发送一个e-mail通知给由recipient参数确定的e-...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    消息驱动Bean必须实现两个接口MessageDrivenBean和MessageListener 在对象创建的过程中将被容器调用,onMessage函数方法接收消息参数,将其强制转型为合适的消息类型,同时打印出消息的内容。同时一个mail note将被...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    消息驱动Bean必须实现两个接口MessageDrivenBean和MessageListener 在对象创建的过程中将被容器调用,onMessage函数方法接收消息参数,将其强制转型为合适的消息类型,同时打印出消息的内容。同时一个mail note将被...

    JAVA上百实例源码以及开源项目

     在对象创建的过程中将被容器调用,onMessage函数方法接收消息参数,将其强制转型为合适的消息类型,同时打印出消息的内容。同时一个mail note将被发送给消息发送者,发送一个e-mail通知给由recipient参数确定的e-...

    JAVA上百实例源码以及开源项目源代码 java开源包2

    Java Socket 聊天通信演示代码 2个目标文件,一个服务器,一个客户端。 Java Telnet客户端实例源码 一个目标文件,演示Socket的使用。 Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例...

    Java范例开发大全 (源程序)

     实例172 银行自动存取一体机 278  9.4 多态 284  实例173 饮食文化 284  实例174 使用构造方法的重载计算课程的GPA值 287  第10章 内部类与接口(教学视频:41分钟) 290  10.1 成员内部类 290  实例...

    java范例开发大全(pdf&源码)

    实例254 银行和超市业务的模拟 505 第14章 泛型(教学视频:43分钟) 511 14.1 泛型基础 511 实例255 一个关于泛型的简单例子 511 实例256 带两个类型参数的泛型 513 实例257 有界类型程序示例 514 实例258 通配符...

    java范例开发大全源代码

     实例172 银行自动存取一体机 278  9.4 多态 284  实例173 饮食文化 284  实例174 使用构造方法的重载计算课程的GPA值 287  第10章 内部类与接口(教学视频:41分钟) 290  10.1 成员内部类 290 ...

    java范例开发大全

    实例284 Socket连接信息 555 实例285 Echo服务的客户端是如何实现的? 556 实例286 检测本机的服务端口 558 实例287 下载的页面不丢失链接 559 实例288 如何对网页进行重新定向 560 实例289 在Internet上搜索对象 ...

    Java范例开发大全(全书源程序)

    实例254 银行和超市业务的模拟 505 第14章 泛型(教学视频:43分钟) 511 14.1 泛型基础 511 实例255 一个关于泛型的简单例子 511 实例256 带两个类型参数的泛型 513 实例257 有界类型程序示例 514 实例258 ...

Global site tag (gtag.js) - Google Analytics