我编写了一个SOCKET程序,数据是以XML的形式发送的,但在客户端发送数据后就出现SOCKET异常——自动断开连接。在客户端是以动态形式生成XML文件的,发送文件代码如:
TransformerFactory tf=TransformerFactory.newInstance();
Transformer transformer=tf.newTransformer();
transformer.transform(new DOMSource(doc),new StreamResult(out));在服务器总是抛出connection reset异常,接收代码如:DataInputStream in=new DataInputStream(so.getInputStream());
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
dbf.setValidating(false);
DocumentBuilder db=dbf.newDocumentBuilder();
Document doc = db.parse(in);
doc.normalize();希望各位能给我意见,最好是有代码参考!多谢!有付出自然会有报酬!

解决方案 »

  1.   

    你现在用的是数据报的通讯方式,通讯完成之后就会断开。
    如果不想断开,应该用阻塞方式进行socket通讯,每次在server创建一个线程来响应客户端的请求。
      

  2.   

    是的,我在server创建一个线程来响应客户端的请求,但还是出问题!
      

  3.   

    [Fatal Error] :1:102: The processing instruction target matching "[xX][mM][lL]"
    is not allowed.
    org.xml.sax.SAXParseException: The processing instruction target matching "[xX][
    mM][lL]" is not allowed.
            at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.
    java:264)
            at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Doc
    umentBuilderImpl.java:292)
            at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:98)
            at TCPServer.main(TCPServer.java:29)
    来自服务端的异常The processing instruction target matching "[xX][mM][lL]" is not
     allowed.现在出现上述问题,该如何解决???