新闻正文

【合集】问个io操作及jdom相关的问题,急呀,谢谢

来源:JAVA天堂  JAVA学习者  2007-7-12 02:07:53 网友评论 0 条 字体:[ ] ~我要投稿!
,
☆──────────────────────────────────────☆
sunmoon.bbs@bbs.zju.edu.cn (沉默的羔羊) 于 Fri Apr 25 11:54:50 2003)
提到:
转信站: SJTU!news.neu.edu.cn!news.bjsing.net!news.happynet.org!ZJUBBS
在编写一个Client/Server的程序
Client向Server发送XML文档,Server解析,然后进行相关的操作
现在传送XML文档部分出现问题,看了API文档也没有修改对,所以问问大家
CODE as follows:
Client:
PrintWriter out=new PrintWriter(
s.getOutputStream(),true);
out.println(new FileInputStream("FO.xml"));
Server:
BufferedReader in=new BufferedReader(
new InputStreamReader(
sock.getInputStream()));
SAXBuilder sb=new SAXBuilder();
Document doc=sb.build(in.readLine());
Error:
java.net.SocketException:Connection reset by peer:JVM_recv in socket input s
tream read
附相关API:
build()的构造函数可以通过InputStream参数构造,所以我想把FO.xml文件作为一个St
ream传送到Server,
然后Server直接把它读取,
怎么修改呢?谢谢
☆──────────────────────────────────────☆
Fukada.bbs@bbs.cqupt.edu.cn (feidao) 于 Fri Apr 25 12:28:53 2003)
提到:
转信站: SJTU!news.neu.edu.cn!news.feeling.smth.org!news.happynet.org!CQUPT
啊,出现的问题跟我的问题如此相似:
我做的是ftp,同样用到了socket,客户端发送command到server端,
然后得到反应,如果发送的是pasv,则server在开启另外一个端口诊听
客户端的数据连接(返回“dataready get”消息),现在就是:命令端口工作正常,可
以正常通信,
但是数据端读取数据时产生同样的异常,还清高手指点指点,代码如下:
client.java 中:
void WaitResponse(){ //等到服务器的反应
while(true){
try{
String st2=inStream.readLine();
System.out.println(st2);
if(st2.equals("quit"))//server listen in 2020 //退出
{
try {
outStream.close();
inStream.close();
s.close();
}
catch(Exception e)
{
System.out.println(e.toString());
}
finally{
outStream.close();
inStream.close();
s.close();
}
}
//if quit end
if(st2.equals("dataready get")) //数据端口2023开始诊听时返回的标志“dataready get”
{
listen=true;
}
SendCommand(); //发送命令
if(listen) //2023已经开启
{
try{
DataSocket=new Socket("localhost",2023);
BufferedReader in=new BufferedReader(new InputStreamReader(DataSocket.get
InputStream()));
PrintWriter out=new PrintWriter(DataSocket.getOutputStream(),true);
GetData();//得到数据
}
catch(Exception e){ /*!!问题
System.out.println(e.toString());//打印出:connectjava.net.SocketExcepti
//on: Connection reset by peer: JVM_recv in socket input stream read
}
}//if end
catch(Exception e){
System.out.println(e.toString());
break;
}
}//while end
}//waitresponse end
}
server.java中:
这段关键代码:
else if(command.equals("PASV")) //设置被动模式

{
StringTokenizer token2 = new StringTokenizer(socket.getLocalAddress(
).getHostAddress());
String[] parts = new String[4];
for (int i=0;i<3;i++)
{
parts[i]=token2.nextToken(".");
}
//最后一个IP段没有点分隔符
parts[3]=token2.nextToken();
// out.println("227 Entering Passive Mode ("+parts[0]+","+parts[1]+",
"+parts[2]+","+parts [3]+",7,228)");
//在2023开启一个监听端口
out.println("dataready get");
serverSocketData= new ServerSocket;
dataSocket=serverSocketData.accept(); //在这里等待连接,why //cannot
//有连接请求后返回socket,并关闭监听服务
serverSocketData.close();
//设置被动模式
passiveMode=true;
}//pasv ended,store start
☆──────────────────────────────────────☆
Fukada.bbs@bbs.cqupt.edu.cn (feidao) 于 Sat Apr 26 17:50:32 2003)
提到:
转信站: SJTU!news.neu.edu.cn!news.tiaozhan.com!news.happynet.org!CQUPT

奇怪,怎么没人帮帮忙呢,斑竹们都很忙吗,需要的话我可以把源代码
都提出来,或者寄信给你,我觉得这个问题还是蛮有意思的,希望大家
能多多交流经验撒,不知道上面那位仁兄的搞定没的?如果搞定请回复
一下好吗,不胜感激!



收藏到ViVi   收藏此页到365Key
上一篇: 【合集】如何自动装载指定版本的虚拟机?
下一篇: 【合集】生成xml文件的问题
用户名:新注册) 密码: 匿名评论 [所有评论]
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
本栏搜索
  • Google
   网站首页 -  网站地图 -  技术学习 -  网站投稿 -  帮助中心
Copyright 2003-2008 www.javah.net All Rights Reserved
2008 如果你喜欢本站 请收藏本站 并推荐给你的朋友一起分享