java socket发送xml报文
ServerRun.java
- import java.io.InputStream;
- import java.net.ServerSocket;
- import java.net.Socket;
- public class ServerRun {
- public static void main(String[] args) throws Exception {
- ServerSocket server = new ServerSocket(3456);
- System.out.println("-----正在监听3456端口---");
- Socket socket = server.accept();
- InputStream is = socket.getInputStream();
- // 前8个字节
- byte[] b = new byte[8];
- is.read(b);
- int len = Integer.parseInt(new String(b, "UTF-8"));
- // 用来填充xml
- b = new byte[len];
- is.read(b);
- // 关闭资源
- is.close();
- socket.close();
- server.close();
- String result = new String(b, "UTF-8");
- System.out.println(result);
- }
- }
ClientRun.java
- import java.io.OutputStream;
- import java.net.Socket;
- public class ClientRun {
- public static void main(String[] args) throws Exception {
- String xml = "<xml>\r\n" +
- "<name>张山</name>\r\n" +
- "<amt>100000</amt>\r\n" +
- "<time>20171011091230</time>\r\n" +
- "<type>支出</type>\r\n" +
- "<opt>信用卡还款</opt>\r\n" +
- "<phone>18940916007</phone>\r\n" +
- "</xml>";
- Socket client = new Socket("127.0.0.1", 3456);
- OutputStream out = client.getOutputStream();
- byte[] b = xml.getBytes("UTF-8");
- out.write(int2Bytes8(b.length));
- out.write(b);
- out.close();
- client.close();
- }
- /**
- * @Title: int2Bytes8
- * @Description: 数字[2] 变成八个字节的 ['0' '0' '0' '0' '0' '0' '0' '2']
- * @param: @param num
- * @param: @return
- * @return: byte[]
- */
- public static byte[] int2Bytes8(int num) {
- StringBuffer sb = new StringBuffer(String.valueOf(num));
- int length = 8 - sb.length();
- for (int i = 0; i < length; i++) {
- sb.insert(0, '0');
- }
- return sb.toString().getBytes();
- }
- }
注:代码中字符串的拼接
是eclipse自动完成的,我只是从wps ( 其他文本编辑器也可以)里面复制到
- String str="copy here";
java socket发送xml报文的更多相关文章
- (转)JAVA socket 进行十六进制报文交互测试
import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io. ...
- Java Socket发送与接收HTTP消息简单实现
在上次Java Socket现实简单的HTTP服务我 们实现了简单的HTTP服务,它可以用来模拟HTTP服务,用它可以截获HTTP请求的原始码流,让我们很清楚的了解到我们向服务发的HTTP消息的结 构 ...
- java socket 发送文件
客户端: package tt; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStrea ...
- 发送xml报文去第三方请求获取xml报文数据
import java.io.*; import java.net.HttpURLConnection; import java.net.MalformedURLException; import j ...
- socket发送http报文的疑惑(求高手指点一二)
给8080或80端口的服务端(自己写的serverSocket服务端)发送字符串,此字符串按照http协议拼接而成,既是所谓的http报文.服务端接受成功.如果在报头与消息体之间少了“\r\n\r\n ...
- JAVA对象和XML文档、原来他们之间还有这一出
最近项目开发中遇到一个问题,访问接口不再通过url地址请求的方式,而是 通过socket发送xml格式的报文到指定服务器来进行信息的统一认证.. 因此组装xml格式的报文字符串以及解析服务器返回的xm ...
- java对象与XML相互转化
起因 最近在公司做了一次webservice相关的任务,其中我最敢兴趣的就是webservice接受到XML对应的流以后是如何方便的转化成java对象,而java对象又是如何生成对应的XML的. 目的 ...
- java socket报文通信(三)java对象和xml格式文件的相互转换
前两节讲了socket服务端,客户端的建立以及报文的封装.今天就来讲一下java对象和xml格式文件的相互转换. 上一节中我们列举了一个报文格式,其实我们可以理解为其实就是一个字符串.但是我们不可能每 ...
- java socket报文通信(一)socket的建立
java socket报文通信(一) socket的建立 今天来和大家分享一下java中如何使用socket进行通信.先来啰嗦两句,看看Tcp/ip和udp: TCP是Transfer Contro ...
随机推荐
- [JS学习笔记]浅谈Javascript事件模型
DOM0级事件模型 element.on[type] = function(){} 兼容性:全部支持 lay1 lay2 lay3 e.target:直接触发事件的元素[IE8及以下不支持tage ...
- Python探索记(18)——文件File
# @Time : 2017/7/8 21:10 # @Author : 原创作者:谷哥的小弟 # @Site : 博客地址:http://blog.csdn.net/lfdfhl # @DESC : ...
- Android onTouchEvent和setOnTouchListener中onTouch的区别
OnTouchEvent()方法 是获取的对屏幕的各种操作,比如向左向右滑动,点击返回按钮等等. 属于一个宏观的屏幕触摸监控. OnTouchListener()方法 是获取某一个控件某一个View的 ...
- [置顶]
个人博客上线!欢迎来访~ http://onlyloveyd.cn/
简介 Hexo + Github + 个人域名 构建静态博客系统. 构建方法 参考 https://yq.aliyun.com/articles/64953 个人博客网站 Cherish Androi ...
- POJ1160 Post Office (四边形不等式优化DP)
There is a straight highway with villages alongside the highway. The highway is represented as an in ...
- 十六、python沉淀之路--迭代器
一.迭代器 1.什么是迭代器协议:对象必须提供一个next方法,执行该方法要返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代(只能往后走,不能往前走). 2.可迭代对象:实 ...
- RK3288 Android5.1系统编译
输入指令时一定要注意当前路径 1.编译之前需要安装JDK7,并配置JAVA环境变量. xxx@build:~/RK3288$ export JAVA_HOME=/usr/lib/jvm/java-7- ...
- python 安装相关命令-汇总
Microsoft Windows [版本 10.0.14393] (c) 2016 Microsoft Corporation.保留所有权利. C:\Windows\system32>pyth ...
- FPGA中RAM使用探索
FPGA中RAM的使用探索.以4bitX4为例,数据位宽为4为,深度为4. 第一种方式,直接调用4bitX4的RAM.编写控制逻辑对齐进行读写. quartus ii 下的编译,资源消耗情况. 85C ...
- .NET4缓存过期策略摘录
以下是网上搜索的资料,仅供参考: 资料一:ASP.NET缓存中Cache过期的三种策略(转自51CTO) 我们在页面上添加三个按钮并双击按钮创建事件处理方法,三个按钮使用不同的过期策略添加ASP.NE ...