首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ServerSocket接受行为

ServerSocket接受行为
EN

Stack Overflow用户
提问于 2011-01-15 00:15:57
回答 1查看 1.3K关注 0票数 0

我有以下代码片段:

代码语言:javascript
复制
if (servsock == null) {
    System.out.println("HELLO1!");
    servsock = new ServerSocket(63456, 10);
    System.out.println("HELLO2!");
}
try {
    System.out.println("HELLO3!");
    sock = servsock.accept();
} catch (Exception ex) {
    if (servsock != null && !servsock.isClosed()) {
        System.out.println("PICO1!");
        servsock.close();
    }
    if (servsock != null && servsock.isClosed()) {
        System.out.println("PICO2!");
        manager.log("SERVER SOCKET closed and nulled.");
        servsock = null;
    }
    sock = servsock.accept();
}
System.out.println("HELLO4!");
is = sock.getInputStream();
System.out.println("HELLO5!");
bis = new BufferedInputStream(is);
System.out.println("HELLO6!");

这段代码在runnable的run()方法中运行,当文件被传输后,它将停止所有通信。

奇怪的是,它不是一个循环。代码可以接受,可以进行文件传输,但我不明白为什么HELLO1又出现在我的屏幕上。因此,当我第二次尝试再次运行此代码时,我会看到“连接被拒绝”。

"10“是我的一个技巧,但是原始代码,也从来没有使用过backlog。

有什么建议吗?

执行前一个命令的代码如下:

代码语言:javascript
复制
final IClientInterface clientInterface = client.getClient();
final prgHolder = new ProgHolder();
Pong ftppong = new Pong();
ftppong.setFileNames(bout64.toByteArray());
ftppong.setDstFolder(dstFolder);
prgHolder.setName("pong");
prgHolder.setTask(pong);
Thread t = new Thread(new Runnable() {
    public void run() {
        try {
            IClientInterface.execute(prgHolder);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
});
t.start();

现在的确切问题是,当我到达新的ServerSocket(63456)命令时,客户端得到一个“连接被拒绝”,但远程PC中的程序是完全开放和广泛侦听的!"netstat“证实了这一点!

因此,我从另一个窗口重新运行(第二次)程序,传递所有HELLO消息并完成作业!

然后线程在远程PC中停止,并解绑端口63456!

为什么它作为代码失败,但接受传入的请求?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-15 00:22:09

根据这段代码,您应该只看到HELLO1一次。然而,这段代码的调用者很可能是在一个循环中,否则检查servsock的前一个值是没有意义的。

这会做什么呢?

代码语言:javascript
复制
servsock = null;
}
sock = servsock.accept();

当你得到一个异常时,不要继续,就像它没有发生一样。

如果您想了解您的代码在做什么,我建议您使用调试器单步调试您的代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4693171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档