ServerRun.java

  1. import java.io.InputStream;
  2. import java.net.ServerSocket;
  3. import java.net.Socket;
  4.  
  5. public class ServerRun {
  6.  
  7. public static void main(String[] args) throws Exception {
  8. ServerSocket server = new ServerSocket(3456);
  9. System.out.println("-----正在监听3456端口---");
  10. Socket socket = server.accept();
  11. InputStream is = socket.getInputStream();
  12. // 前8个字节
  13. byte[] b = new byte[8];
  14. is.read(b);
  15. int len = Integer.parseInt(new String(b, "UTF-8"));
  16.  
  17. // 用来填充xml
  18. b = new byte[len];
  19. is.read(b);
  20.  
  21. // 关闭资源
  22. is.close();
  23. socket.close();
  24. server.close();
  25.  
  26. String result = new String(b, "UTF-8");
  27. System.out.println(result);
  28.  
  29. }
  30.  
  31. }

ClientRun.java

  1. import java.io.OutputStream;
  2. import java.net.Socket;
  3.  
  4. public class ClientRun {
  5.  
  6. public static void main(String[] args) throws Exception {
  7. String xml = "<xml>\r\n" +
  8. "<name>张山</name>\r\n" +
  9. "<amt>100000</amt>\r\n" +
  10. "<time>20171011091230</time>\r\n" +
  11. "<type>支出</type>\r\n" +
  12. "<opt>信用卡还款</opt>\r\n" +
  13. "<phone>18940916007</phone>\r\n" +
  14. "</xml>";
  15. Socket client = new Socket("127.0.0.1", 3456);
  16. OutputStream out = client.getOutputStream();
  17.  
  18. byte[] b = xml.getBytes("UTF-8");
  19.  
  20. out.write(int2Bytes8(b.length));
  21. out.write(b);
  22. out.close();
  23. client.close();
  24. }
  25.  
  26. /**
  27. * @Title: int2Bytes8
  28. * @Description: 数字[2] 变成八个字节的 ['0' '0' '0' '0' '0' '0' '0' '2']
  29. * @param: @param num
  30. * @param: @return
  31. * @return: byte[]
  32. */
  33. public static byte[] int2Bytes8(int num) {
  34. StringBuffer sb = new StringBuffer(String.valueOf(num));
  35. int length = 8 - sb.length();
  36. for (int i = 0; i < length; i++) {
  37. sb.insert(0, '0');
  38. }
  39. return sb.toString().getBytes();
  40. }
  41. }

注:代码中字符串的拼接

是eclipse自动完成的,我只是从wps ( 其他文本编辑器也可以)里面复制到

  1. String str="copy here";
  1.  

java socket发送xml报文的更多相关文章

  1. (转)JAVA socket 进行十六进制报文交互测试

    import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io. ...

  2. Java Socket发送与接收HTTP消息简单实现

    在上次Java Socket现实简单的HTTP服务我 们实现了简单的HTTP服务,它可以用来模拟HTTP服务,用它可以截获HTTP请求的原始码流,让我们很清楚的了解到我们向服务发的HTTP消息的结 构 ...

  3. java socket 发送文件

    客户端: package tt; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStrea ...

  4. 发送xml报文去第三方请求获取xml报文数据

    import java.io.*; import java.net.HttpURLConnection; import java.net.MalformedURLException; import j ...

  5. socket发送http报文的疑惑(求高手指点一二)

    给8080或80端口的服务端(自己写的serverSocket服务端)发送字符串,此字符串按照http协议拼接而成,既是所谓的http报文.服务端接受成功.如果在报头与消息体之间少了“\r\n\r\n ...

  6. JAVA对象和XML文档、原来他们之间还有这一出

    最近项目开发中遇到一个问题,访问接口不再通过url地址请求的方式,而是 通过socket发送xml格式的报文到指定服务器来进行信息的统一认证.. 因此组装xml格式的报文字符串以及解析服务器返回的xm ...

  7. java对象与XML相互转化

    起因 最近在公司做了一次webservice相关的任务,其中我最敢兴趣的就是webservice接受到XML对应的流以后是如何方便的转化成java对象,而java对象又是如何生成对应的XML的. 目的 ...

  8. java socket报文通信(三)java对象和xml格式文件的相互转换

    前两节讲了socket服务端,客户端的建立以及报文的封装.今天就来讲一下java对象和xml格式文件的相互转换. 上一节中我们列举了一个报文格式,其实我们可以理解为其实就是一个字符串.但是我们不可能每 ...

  9. java socket报文通信(一)socket的建立

    java socket报文通信(一) socket的建立  今天来和大家分享一下java中如何使用socket进行通信.先来啰嗦两句,看看Tcp/ip和udp: TCP是Transfer Contro ...

随机推荐

  1. [JS学习笔记]浅谈Javascript事件模型

    DOM0级事件模型 element.on[type] = function(){} 兼容性:全部支持   lay1 lay2 lay3 e.target:直接触发事件的元素[IE8及以下不支持tage ...

  2. Python探索记(18)——文件File

    # @Time : 2017/7/8 21:10 # @Author : 原创作者:谷哥的小弟 # @Site : 博客地址:http://blog.csdn.net/lfdfhl # @DESC : ...

  3. Android onTouchEvent和setOnTouchListener中onTouch的区别

    OnTouchEvent()方法 是获取的对屏幕的各种操作,比如向左向右滑动,点击返回按钮等等. 属于一个宏观的屏幕触摸监控. OnTouchListener()方法 是获取某一个控件某一个View的 ...

  4. [置顶] 个人博客上线!欢迎来访~ http://onlyloveyd.cn/

    简介 Hexo + Github + 个人域名 构建静态博客系统. 构建方法 参考 https://yq.aliyun.com/articles/64953 个人博客网站 Cherish Androi ...

  5. POJ1160 Post Office (四边形不等式优化DP)

    There is a straight highway with villages alongside the highway. The highway is represented as an in ...

  6. 十六、python沉淀之路--迭代器

    一.迭代器 1.什么是迭代器协议:对象必须提供一个next方法,执行该方法要返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代(只能往后走,不能往前走). 2.可迭代对象:实 ...

  7. RK3288 Android5.1系统编译

    输入指令时一定要注意当前路径 1.编译之前需要安装JDK7,并配置JAVA环境变量. xxx@build:~/RK3288$ export JAVA_HOME=/usr/lib/jvm/java-7- ...

  8. python 安装相关命令-汇总

    Microsoft Windows [版本 10.0.14393] (c) 2016 Microsoft Corporation.保留所有权利. C:\Windows\system32>pyth ...

  9. FPGA中RAM使用探索

    FPGA中RAM的使用探索.以4bitX4为例,数据位宽为4为,深度为4. 第一种方式,直接调用4bitX4的RAM.编写控制逻辑对齐进行读写. quartus ii 下的编译,资源消耗情况. 85C ...

  10. .NET4缓存过期策略摘录

    以下是网上搜索的资料,仅供参考: 资料一:ASP.NET缓存中Cache过期的三种策略(转自51CTO) 我们在页面上添加三个按钮并双击按钮创建事件处理方法,三个按钮使用不同的过期策略添加ASP.NE ...