如何解决客户端发送数据后连接自动断开的问题

TanJingyu 2006-08-31 02:34:11
我编写了一个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();

希望各位能给我意见,最好是有代码参考!多谢!有付出自然会有报酬!
...全文
660 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
TanJingyu 2006-08-31
  • 打赏
  • 举报
回复
[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.

现在出现上述问题,该如何解决???
zgysc 2006-08-31
  • 打赏
  • 举报
回复
别调用close()+死循环
pauliuyou 2006-08-31
  • 打赏
  • 举报
回复
死循环, 不让连接断开就可以了
TanJingyu 2006-08-31
  • 打赏
  • 举报
回复
是的,我在server创建一个线程来响应客户端的请求,但还是出问题!
infowain 2006-08-31
  • 打赏
  • 举报
回复
你现在用的是数据报的通讯方式,通讯完成之后就会断开。
如果不想断开,应该用阻塞方式进行socket通讯,每次在server创建一个线程来响应客户端的请求。
TanJingyu 2006-08-31
  • 打赏
  • 举报
回复
那如何解决啊?
xzwsun 2006-08-31
  • 打赏
  • 举报
回复
短连接发送完收到应答断开是正常的。
奇伢 2006-08-31
  • 打赏
  • 举报
回复
关注....
TanJingyu 2006-08-31
  • 打赏
  • 举报
回复
在线等待!

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧