当前位置:  开发笔记 > 编程语言 > 正文

正确的方法来关闭套接字和ObjectOutputStream?

如何解决《正确的方法来关闭套接字和ObjectOutputStream?》经验,为你挑选了1个好方法。

我正在用Java编写网络应用程序,在客户端和服务器之间进行通信我正在使用序列化对象来表示数据/命令并通过对象输出/输入流发送它们.

我在干净地关闭连接时遇到了问题,我认为我遗漏了一些我不太了解的基本功能,我以前从未使用过带有序列化的套接字.

什么命令我尝试关闭连接(先关闭客户端,先关闭服务器)ConnectionReset抛出异常.我无法捕获此异常,因为客户端在另一个线程中运行到程序的其余部分,不断地监听消息,这必须完成,因为在Java中socket.read()是一种阻塞方法.

关闭我用来发送对象的套接字的正确方法是什么?



1> Jason Day..:

您需要发送您的监听器(无论是客户端还是服务器,无关紧要)某种信号来停止监听更多数据.这是一个非常简单的例子:

ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(sock.getInputStream()));

while (true) {
    Object obj = ois.readObject();

    if (obj instanceof String) {
        if ((String)obj).equalsIgnoreCase("quit")) {
            break;
        }
    }

    // handle object
}

ois.close();
sock.close();

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有