很是郁闷,之前做的简单网络聊天系统的传输协议是我自己随便编写的,一看就觉得不规范,更觉得不爽。
对于一个程序员来说应该是追求完美的,我好象也是一个追求完美的人。于是我想到用XML来传输我每次发送的信息。我用程序来创建一个XML文件,然后通过Socket提供的输出流将XML传输出去,传输方法的代码如下。但是在接收的时候却出了问题
java 代码
- public void send(OutputStream os){
- Document doc ;
- Element stus;
- Element stu;
- Element name;
- Element age;
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
-
- try {
- DocumentBuilder db = dbf.newDocumentBuilder();
-
- doc = db.newDocument();
-
- stus = doc.createElement("stusn");
-
- stu = doc.createElement("stu");
-
- name = doc.createElement("name");
- name.appendChild(doc.createTextNode(""));
-
- age = doc.createElement("age");
- age.appendChild(doc.createTextNode("25"));
-
- stu.appendChild(name);
- stu.appendChild(age);
-
- stus.setAttribute("nation", "china");
- stus.appendChild(stu);
-
- doc.appendChild(stus);
-
- TransformerFactory tf = TransformerFactory.newInstance();
-
- Transformer ts = tf.newTransformer();
-
- ts.transform(new DOMSource(doc), new StreamResult(os));
-
- } catch (Exception e) {
-
- e.printStackTrace();
- }
- }
-
我在这个方法里传输的参数是一个Socket提供的输出流。然后在服务器端接收这个流对象,并对这个流对象进行解析,代码如下。
java 代码
- ServerSocket ss = new ServerSocket(7777);
- System.out.println("服务器已经启动......");
- Socket so = ss.accept();
-
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
-
- DocumentBuilder db = dbf.newDocumentBuilder();
-
- Document doc = db.parse(so.getInputStream());
-
当服务器接收到客户端的Socket以后开始解析doc文档对象。doc文档对象要解析的是从服务器端的Socket获得的输入流,但是我运行服务器端,在运行客户端以后,程序却停在了下面的代码这一行
Document doc = db.parse(so.getInputStream());
真不知道为什么?程序执行到上面一行以后Socket的输入流已经有数据了,为什么还停在这里呢?希望那位迷津啊
分享到:
相关推荐
linux下c语言实现xml传输方式的即时通讯
xml传输
知识点:feign以XML格式传输,domain通过Jackson转成XML, 项目总体理解:此文档搭建了eureka注册中心,和生产者,以及feign消费者。feign消费者以XML格式传输数据
基于XML的移动数据传输机制.pdf
ajax传输xml
传输文件的时候所用到的协议,一般不多用xml协议
xml是一种标记语言类似于html 标记语言,是一种可以展现出关于文档结构和数据处理细节的文字编码。 XML 的设计宗旨是传输数据,而非显示数据
用Java实现SOAP的XML文档网络传输及远程过程调用(RPC)
xml demo
主要介绍了java 中HttpClient传输xml字符串实例详解的相关资料,需要的朋友可以参考下
主要描述如何在http协议下用加密xml进行传输
介绍xml,以及xml的使用操作方法
用Java实现基于SOAP的XML文档网络传输及远程过程调用(RPC).
把word文件转换成xml文件输出,在从xml文件读取数据输出原来的word文件,用于文件传输
java 对象的xml串行化 实现网络间的类信息的传输 java 对象的xml串行化 实现网络间的类信息的传输 java 对象的xml串行化 实现网络间的类信息的传输
很好用的工具,可以将XML文件通过管道方式传输试试吧 相信对你有帮助
通过传输xml的java网络聊天室(socket通讯) 包括源代码和jar程序。(源代码里因为有引用声音文件,可能在eclipse里打开有异常)直接打开jar文件无问题
java http 发送xml报文(java发送xml报文实例+参数)java http 发送xml报文java http 发送xml报文(java发送xml报文实例+参数)
调用MQ向指定的队列中传输xml文件,同时发送成功后到指定的队列中去读取回复的xml格式的消息
数据可通过XML进行唯一的标识。1、Internet中的数据传输 2、SGML 3、电子数据交换 4、HTML 5、XML 选择题: 1、C 2、ABCD 3、ABCD 4、ABCD 5、ABCD