问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java中使用Socket连接,关闭是出异常如何处理?

发布网友 发布时间:2022-04-28 21:53

我来回答

2个回答

热心网友 时间:2022-04-13 23:21

你光有try catch,但实际并未对产生的网络异常进行处理,然后继续循环,那自然是无限异常下去了。只要在catch到异常后进行相应处理即可,比如关闭连接,然后退出。在服务端,客户端都加上这个处理,比如在客户端加,如下

    public void run()
    {
        while (true)
        {
            User u = new User();
            u.setName("1");
            ObjectOutputStream oos;
            try
            {

                oos = new ObjectOutputStream(s.getOutputStream());
                oos.writeObject(u);
            }
            catch (Exception e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
                
                //注意,这边会看到显示的是true,因为对方并没有调用close来关闭连接,而是直接终止程序
                System.out.println(s.isConnected());
                
                if (s != null)
                {
                    try
                    {
                        s.close();
                        s = null;
                    }
                    catch (Exception ex)
                    {
                        ex.printStackTrace();
                    }
                    
                    System.out.println("远程连接异常,关闭连接");
                    return;
                }
            }
        }
    }

 

注:

你的这种情况即不能用u=ois.readObject())!=null来判断,也不能用s.isConnected&&!s.isColse()来判断,因为你是直接终止服务端或者客户端的运行,而不是先close连接,再终止程序。

热心网友 时间:2022-04-14 00:39

服务器端读取的时候怎么可以用死循环,客户端一关闭,你再去读取当然会抛出异常了。
while循环用while((u=ois.readObject())!=null)当连接关闭的时候,readObject会返回null对象,while循环就退出了。

客户端应该用的是socket的isColse()和isConnected()的值来进行循环。
即while(s.isConnected&&!s.isColse())即,连接曾经连接成功并且未关闭的情况下循环。

捕捉异常之后也应该使用return来退出整个run方法不在循环
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...油桶横放长6、25米,圆的直径为2、05米,液体横放的高度为1、8米。求... 一个圆桶半径为1.2米,高为12米,现将油桶平放,此时装油的高度为1.722米... 大油桶是横放的,油桶圆的直径是2.15米,长是3.6米,里面的净油位高度... 一个圆柱油桶横着放,长5.5米,直径2.4米,里面装着油,油高度1米,求现在... 有一个圆柱体桶横放,长7米,高2.7米,里面装的油与油桶距离1.2米,求油的... 圆柱形油桶横放时油部分占底面圆周的三分之一当油桶直立油的高度和桶... 有一个圆柱体桶横放 有一个圆柱体桶横放 长9.4米 高2.6米 里面装的油与桶底距离0.6米,求里 ... 电脑单独安装outlook教程如何在电脑上安装outlook 直角转弯为什么会压角 socket创建的读写通道如果读异常,写是否会同时异常? java中如果在关闭Socket时发生一个I/O错误,则会抛出一个什么异常? 信用卡还不上能判刑吗 机关领导的勤务兵,新兵下连可以干吗? 如果去部队机关, 是在教导大队训练吗? 什么*才可以给领导开车 勤务兵是什么意思,有少尉的官大吗 新兵〔野战部队〕下了连队被分到什么连队好呢?轻松一点的。 勤务兵是干什么的 当勤务兵什么要求 当勤务兵好吗? 新兵去中参部做什么 新兵给排长冼衣叠被叫勤务兵吗 新兵下连队分到海军警卫勤务队好吗? 当勤务兵需要做些什么,军衔多大的首长才有勤务兵? 穿山甲的壳有什么用处 新兵入伍当勤务兵好吗 穿山甲为什么会打洞? 军队里什么级别配勤务兵 桐庐再次发现中华穿山甲,该物种一般分布在哪些地区? 在部队当过勤务兵的进来聊聊 新兵下连队,分配到留置勤务,这个岗位容易留队吗- 问一问 Socket异常问题 java里socket通信,异常处理问题。 socket closed错误是怎么回事 Socket数据上传异常处理? android 用socket连接服务器,报出异常怎么解决? 什么叫做用U盘做启动盘?有什么作用? android socket 异常退出问题 为什么socket老是connect被拒绝,异常10061 常见Socket连接错误及原因有哪些 求一篇关于学习大学语文的感受的作文 字数在600字左右? 大学语文的作文!!急!!! 求我眼中的大学语文作文。三四百字就好,急急急 大学语文作文《我喜爱的一本书》 大一大学语文老师 作文1000字 求一篇关于 使我印象深刻的大学语文课 的作文。 ~!! 急 、 拜托 T.T 2010年七月全国自考大学语文作文范文 大学语文话题作文!!!帮忙拟话题!!! 新呗分期是正规的吗 家政公司的全屋消毒沙发消毒有用吗 桔子分期显示金融机构审核中