免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8668 | 回复: 8
打印 上一主题 下一主题

readLine时总是报connection reset,是什么原因啊? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-27 12:33 |只看该作者 |倒序浏览
为什么我的client端给自己的模拟的server端发数据都正常,但是给对方的服务端发送数据后,在接收返回时总是报 connection reset?
请教各位大侠帮忙看看,我的客户端程序:
import java.net.*;
import java.io.*;

public class XMLClient {
    public XMLClient() {
        try {
            jbInit();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    static Socket sock;

    public static void main(String[] args)throws Exception{
    sock = new Socket("192.168.0.1",5555);
    sock.setSoTimeout(6000);
    System.out.println("获得连接"+sock);

    PrintWriter write = new PrintWriter(new OutputStreamWriter (sock.getOutputStream()),true);

    File file = new File("gsmp_login.xml");  //用于发送的文件路径
   BufferedReader read = new BufferedReader(new FileReader(file));

    String str=null;
    while((str = read.readLine()) != null)
    write.println(str);
    write.flush();
    System.out.println("write ok");
    String URL="getresp.xml";
   
    BufferedReader   in = new   BufferedReader(new   InputStreamReader(sock.getInputStream()));
    PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(URL,false)));

    String xml=null;
    while((str = in.readLine()) != null){
        xml+=str+"\n";
        out.println(str);
    }
   
    sock.close();
    }
}


程序运行到in.readLine()时就connection reset,换成读字符的read()也不行,不知道是哪边的问题?

论坛徽章:
0
2 [报告]
发表于 2007-06-27 14:41 |只看该作者
初学java,实在不好意思,希望大家帮帮忙,在线等。

论坛徽章:
0
3 [报告]
发表于 2007-06-27 16:03 |只看该作者
connection reset
是一个经典遗留问题,不影响程序运行的

论坛徽章:
0
4 [报告]
发表于 2007-06-28 09:05 |只看该作者
谢谢楼上的回复。
我看了服务端的日志,显示的是
invalid accept sockfd=9, close!
Recv thread id:147459 exit!

这种情况有可能是我通讯方面的设置有问题导致服务端ACCEPT失败
还是我发过去的包文格式不对,导致服务器把我做为异常处理掉了呢?

论坛徽章:
0
5 [报告]
发表于 2007-06-28 21:18 |只看该作者
connection reset是不是指服务器那边返回了标记的RST的包呢?

论坛徽章:
0
6 [报告]
发表于 2007-06-29 10:02 |只看该作者
我怎么看服务器是否返回的是RTS的包呢,而且服务器端是invaild accept,是不是服务器就没返回?我后来在程序下面加了catch,
    }catch(IOException e){
         System.out.println("IOException when connecting Server!");
         e.printStackTrace();
         info = e.toString();
      }
这里面打出来了

不好意思,初学,很多地方不是很明白,谢谢大家指点!

我现在就是不能确定是通讯有问题还是发过去的包格式不对,根据服务器的日志和我客户端的表现我实在判断不出来

论坛徽章:
0
7 [报告]
发表于 2007-06-29 12:59 |只看该作者
PrintWriter write = new PrintWriter(new OutputStreamWriter (sock.getOutputStream()),true);
这样就autoflush了,你改成false试试看

论坛徽章:
0
8 [报告]
发表于 2007-06-29 13:15 |只看该作者
原帖由 perryhg 于 2007-6-29 12:59 发表
PrintWriter write = new PrintWriter(new OutputStreamWriter (sock.getOutputStream()),true);
这样就autoflush了,你改成false试试看


试了,还是不行啊

论坛徽章:
0
9 [报告]
发表于 2007-07-02 16:03 |只看该作者
原帖由 zoegl 于 2007-6-27 12:33 发表
为什么我的client端给自己的模拟的server端发数据都正常,但是给对方的服务端发送数据后,在接收返回时总是报 connection reset?
请教各位大侠帮忙看看,我的客户端程序:
import java.net.*;
import java.io. ...

给对方的服务端? 你不会随便找个端口就向别人的server发送吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP