`
lvwenwen
  • 浏览: 958553 次
  • 性别: 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和监听端口
  第二步:发送请求报文
  第三步:读取服务器端返回的数据报文
分享到:
评论

相关推荐

    Android手机客户端与服务器之间通信socket

    在实际开发中,Android客户端可能需要通过Socket发送JSON、XML等格式的数据。此外,还可以使用线程或异步任务处理Socket通信,避免阻塞主线程。同时,为了提高用户体验,可以添加进度条、提示信息等,显示数据传输的...

    android app与pc通信,USB连接socket通信,

    这种方式相对于无线通信更稳定,而且由于数据不经过公共网络,所以安全性较高,特别适用于银行、军事或其他对信息安全要求极高的领域。 在实际开发过程中,我们可能需要参考一些开源的扫描工具源码,这些源码通常...

    java Socket通信的8583协议

    本文将详细介绍Java如何实现8583报文的发送和接收,并涉及Socket通信以及银联加密算法的应用。 理解ISO 8583报文结构至关重要。报文由多个字段组成,每个字段都有特定的位长和含义,例如MTI(Message Type ...

    PB-SOCKET开发

    4. 创建Socket客户端:实现连接服务端的逻辑,以及发送和接收PB消息的方法。 5. 测试和优化:进行功能测试和性能调优,确保通信的稳定性和效率。 总的来说,PB-SOCKET开发是一种强大的技术组合,它结合了PB的高效...

    C# RSA分段加密SOCKET通信

    总的来说,`C# RSA分段加密SOCKET通信`是一个实现安全网络通信的实例,它结合了`SOCKET`的网络通信能力与`RSA`加密的隐私保护机制。这种组合在银行、电子商务等对数据安全性要求极高的领域中有着广泛的应用。通过...

    iso8583协议发送报文实现

    实现ISO8583报文的socket发送,通常包括以下几个步骤: 1. 创建socket:使用socket()函数创建一个socket对象。 2. 连接服务器:调用connect()函数,指定服务器的IP地址和端口号,完成TCP连接。 3. 压缩报文:使用...

    Socket_8583.zip

    使用Socket发送敏感的8583报文时,可能需要采用SSL/TLS加密,以防止数据在传输过程中被窃取或篡改。 通过SocketTestDlg.exe这样的工具,开发者和测试人员能够便捷地测试和调试8583报文的通信流程,确保系统的稳定性...

    SocketTool.7z

    8583报文是一种国际通用的金融交易消息标准,主要用于银行卡交易,包括借记卡、信用卡等电子支付业务。它由一系列字段组成,每个字段都有特定的含义和格式,如交易类型、商户ID、金额等。SocketTool能够很好地支持...

    SocketClient.zip

    1. **Socket编程**:Socket是操作系统提供的一种接口,它允许应用程序通过网络发送和接收数据。在Java中,Socket类代表了客户端与服务器之间的连接,而ServerSocket类则用于服务器端监听客户端的连接请求。Socket...

    socket和http实例

    在银行通讯场景中,XML可能用于构造交易请求和响应消息,如转账、查询余额等操作的描述。 在实际应用中,客户端可能使用HTTP协议向银行服务器发送HTTP请求,该请求包含用XML编码的交易信息。服务器接收到请求后,...

    c# Socket Server Client 封装

    SSL通过证书机制和公钥/私钥加密技术,为Socket通信提供了安全的通道,常用于网上银行、电子商务等对数据安全要求高的场景。C#中的`System.Security.Cryptography`命名空间提供了相关的加密API,这个库可能是利用...

    我的socket编程

    总的来说,“我的socket编程”项目旨在通过BankServer和BankClient实现一个简单的银行服务模拟,让学习者能够理解并实践Socket编程的基本原理和操作流程,同时掌握网络通信的核心技术。通过这样的实践,不仅可以提高...

    简单好用socket测试工具和8583位图

    在使用这些工具时,开发者首先需要了解Socket的基本概念,包括套接字的创建、绑定、监听、接受连接和发送/接收数据等步骤。然后,对于8583位图工具,需要熟悉ISO 8583协议的结构和字段定义,以便正确解读报文内容。...

    Java ssl socket 双向认证

    私钥用于解密接收到的信息,公钥用于加密发送出去的信息。 3. **信任库**:服务器需要一个包含所有可能客户端证书的可信证书库,客户端则需要一个包含服务器证书的可信证书库。 4. **SSLContext**:这是Java中配置...

    ATM.rar_ATM socket_SWT socket_java ATM_java atm socket

    在这个项目中,ATM客户端通过socket连接到服务器,发送请求(如取款、存款)并接收响应。Java的`java.net.Socket`类和`ServerSocket`类是实现这一功能的关键。 **4. SWT**: SWT提供了一系列的控件和布局管理器,...

    Java实现纸币识别器接收通信控制实现

    在现代自动售货机、零售店以及银行自助服务系统中,纸币识别器扮演着至关重要的角色。通过精准地识别不同面额的纸币,它能够有效地处理现金交易。本主题将深入探讨如何使用Java语言来实现对纸币识别器的通信控制,以...

    java实现的8583发包解包

    本文将详细介绍Java如何实现8583报文的发送和接收,并涉及Socket通信以及银联加密算法的应用。 首先,理解ISO 8583报文结构至关重要。报文由多个字段组成,每个字段都有特定的位长和含义,例如MTI(Message Type ...

    cli.rar_Openssl socket_openssl ssl_socket ssl_ssl

    在计算机网络中,SOCKET是进程间通信的一种接口,允许应用程序通过网络发送和接收数据。在客户端-服务器模型中,客户端通过SOCKET连接到服务器,发起请求,服务器则通过SOCKET接收请求并返回响应。 在SSL/TLS下使用...

    测试Socket协议的Loadrunner脚本(8583协议)+8583报文解析

    Socket 协议是一种网络通信协议,允许不同的应用程序通过网络进行通信。Socket 协议提供了一种标准的方式来建立、维护和关闭网络连接。在这个示例中,我们使用 Loadrunner 来模拟 Socket 协议的客户端,以测试服务器...

    论文研究-基于CMPP协议的银行短信系统设计和实现.pdf

    例如,使用Socket进行网络通信编程,使用数据库存储短信发送、接收日志,处理用户定制等信息。 总而言之,基于CMPP协议的银行短信系统设计和实现是一项复杂的工程任务,需要综合多种技术手段,确保短信业务的稳定、...

Global site tag (gtag.js) - Google Analytics