首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SocketException连接复位

SocketException连接复位
EN

Stack Overflow用户
提问于 2011-07-05 07:45:15
回答 2查看 6.6K关注 0票数 0

我创建了一个接受TCP连接的服务器。连接到套接字后,循环从输入流读取数据。

步骤:

  1. I启动我的服务器。
  2. 启动客户端。

现在我要关闭客户。

然后服务器给我SocketException连接重置

在从输入流读取之前,如何检查我的客户端是否还活着。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-05 09:55:24

如果您的服务器获得“连接重置”,则可能是写入另一端已关闭的连接。用户按下“后退”按钮的浏览器就是一个很好的例子。如果这是一个预期的条件,忽略异常。如果它构成应用程序协议错误,请调试应用程序。

票数 2
EN

Stack Overflow用户

发布于 2011-07-05 08:18:05

有两种方法你可以检查一个套接字是否连接,你可以读或写它,如果它是连接的,你不会得到一个错误,如果它没有连接,你会得到一个错误。我是这样检查套接字是否连接的:

代码语言:javascript
复制
BufferedReader reader;

public void run()
{
    try
    {
        String message;
        while((message = reader.readLine())!=null) //The thread stops here untill the reader has somthing to read
        {
            System.out.println(message);
        }
     }catch(Exception e)
     {
         System.out.println("Client disconnected!");
         // an error is thrown when reader cannot read the stream because it is closed, you will get a connection reset error.
     }
}

连接套接字时,读取器等待,直到有一些东西需要读取(message= reader.readLine())。当客户端断开连接并关闭套接字时,读取器会抛出一个异常,因为由于流已关闭,无法读取任何内容。我希望这能帮到你!

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

https://stackoverflow.com/questions/6579382

复制
相关文章

相似问题

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