祝愿大家都不脱发 2016-08-25 03:30 采纳率: 75%
浏览 1818
已采纳

socket连接问题,关闭原来的,建另一个IP的socket

我现在有一个socket连接,现在我想停掉他,然后用另一个IP开启socket,求方法
那个,程序运行,只允许有一个socket,然后我这个做的是修改IP之后路,我应该怎么做呢?

  • 写回答

3条回答 默认 最新

  • 叽哩叽哩鸡 2016-08-25 08:56
    关注

    断开代码:

                if (socket != null && !socket.isClosed())
                {
                    // 先停止在关闭,否则数据丢失
                    socket.shutdownInput();
                    socket.shutdownOutput();
                    socket.close();
                }
    

    连接代码:

        /** 进行网络的连接,在线程中进行的网络的建立 */
        private void SocketConnected(final String address, final int duankou)
        {
            new Thread(new Runnable()
            {
                public void run()
                {
                    socket = new Socket();
                    DetactionFlag = true;
                    try
                    {
                        socket.connect(new InetSocketAddress(address, duankou), 5000);
                        // Socket socket = new Socket(ip,port); 用这种方式的话会出现卡机现象
                        // socket.setTimeout(timeout);
                        out = socket.getOutputStream();
                        in = socket.getInputStream();
                        bff = new BufferedReader(new InputStreamReader(in)); // 接受数据的对象
    
                        // 开启数据读取
                        if (rcvThread == null || !rcvThread.isAlive()) 
                        {
                            rcvThread = new ReceiveThread();
                            rcvThread.start();
                        }
                        // 开启断线重连
                        if (dtctThread == null || !dtctThread.isAlive()) 
                        {
                            dtctThread = new DetactionThread();
                            dtctThread.start();
                        }
                    }
                    catch (IOException e)
                    {
                        e.printStackTrace();
                    }
    
                    if (dtctThread == null || !dtctThread.isAlive())
                    {
                        // 开启断线重连
                        dtctThread = new DetactionThread();
                        dtctThread.start();
                    }
                }
            }).start();
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥50 汇编语言除法溢出问题
  • ¥65 C++实现删除N个数据列表共有的元素
  • ¥15 Visual Studio问题
  • ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波