很是郁闷,之前做的简单网络聊天系统的传输协议是我自己随便编写的,一看就觉得不规范,更觉得不爽。
对于一个程序员来说应该是追求完美的,我好象也是一个追求完美的人。于是我想到用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的输入流已经有数据了,为什么还停在这里呢?希望那位迷津啊
分享到:
相关推荐
在“XML.zip_XML传输”这个主题中,我们主要关注的是XML在文件传输中的应用。虽然XML并不常见于直接作为传输协议,但它在数据交换中扮演着重要角色,尤其是在Web服务和跨平台通信中。 XML文件结构清晰,易于理解和...
XML(eXtensible Markup Language)是一种用于标记数据的语言,其设计目的是传输和存储数据,而不是显示数据。在移动设备领域,XML的应用尤其重要,因为它提供了结构化数据的标准化表示方式,使得不同平台和系统之间...
在Linux环境下,使用C语言实现XML传输方式的即时通讯是一个涉及多方面技术栈的项目。以下将详细解析这个主题中的关键知识点。 首先,C语言是系统级编程的基础,它的低级特性和高效性能使得它非常适合在Linux这样的...
在"feign以XML格式传输-技术点eureka-feign-jackson.zip"这个项目中,我们关注的核心知识点是如何在Feign客户端中使用XML进行数据传输,并结合Jackson库将Java对象转换为XML格式。 首先,让我们深入理解Eureka。...
在实际应用中,使用SAX解析器进行XML传输时,通常会创建一个SAX事件处理器(ContentHandler),该处理器会接收并处理由解析器生成的事件。例如,当遇到XML的开始元素时,处理器可能会创建一个新的对象来表示这个元素...
例如,在给定的“XMLppt”文件中,可能包含了关于XML的演示文稿,详细讲解了XML的基本概念、语法、解析方法以及XML在实际项目中的应用案例。通过学习这样的课件,我们可以深入理解XML的工作原理,并提升处理结构化...
总结,XML传输结合Socket编程可以实现高效、自定义的网络通信。理解XML的结构和解析机制,掌握Socket的基本操作,以及合理选择数据压缩和解析策略,是实现这一技术的关键。在实际应用中,还需注意性能优化、错误处理...
对于XML传输,数据类型通常是"application/xml"。 当请求被发送后,Servlet在服务器端接收到请求,处理业务逻辑,并生成一个XML响应。这个响应可以通过XMLHttpRequest对象的`responseXML`属性获取。在JavaScript中...
ajax传输xml
然而,XML数据中可能包含敏感信息,如商业数据、个人信息等,因此在传输过程中必须进行加密,以确保数据的安全性。本文将详细介绍如何在HTTP协议下实现XML的加密传输。 1. **XML加密原理**: XML加密是通过使用...
在IT行业中,Word与XML之间的转换传输是一种常见的数据处理需求,尤其在文档处理、数据交换和格式转换场景中。XML(可扩展标记语言)是一种结构化的数据存储格式,具有良好的可读性和机器可解析性,而Word则是常用的...
总之,Java对象的XML串行化是Java开发中的一项重要技术,它通过XStream等库实现了Java对象与XML数据之间的灵活转换,从而在网络通信和分布式系统中实现了类信息的有效传输。在实际项目中,合理利用这项技术可以提高...
本文将深入探讨如何使用Java来实现基于SOAP的XML文档网络传输以及远程过程调用(RPC)。这是一项关键的技术,它允许不同系统间的无缝交互,即使这些系统采用不同的编程语言和平台。 SOAP是一种基于XML的协议,主要...
在本实例中,我们将讲解如何使用HttpClient来传输XML字符串。首先,我们需要确保引入了正确的依赖,包括Apache HttpClient、HttpMime、Commons Lang以及其他的辅助库。以下是POM文件中的依赖配置: ```xml <!-- ....
xml demo
XML(eXtensible Markup Language)则是一种用于存储和传输数据的标记语言,其结构化特性使得它在跨平台的数据交换中非常有用。本教程将深入探讨如何在C#中操作XML,包括读取和生成XML文档,并利用Web Service接口...
XML设计的主要目标是传输和存储数据,而不是显示数据。与HTML不同,HTML主要用于呈现网页,而XML提供了一种结构化的方式来组织数据,使得数据更容易被机器理解和处理。XML文档由一系列元素构成,每个元素可以包含...
XML(eXtensible Markup Language)是一种标记语言,用于存储和传输结构化数据。它以人类可读的形式定义了数据结构,并且被广泛应用于网络服务、配置文件和数据交换等领域。 pugixml库主要包含两个核心类:`xml_...