套接字绑定异常。已在Android

时间:2018-02-20 09:00:58

标签: android sockets

我有一个应用程序,我的设备在2个热点配置文件之间切换。我们称他们为HotSpot A和HotSpot B. 我在端口上的HotSpot A上创建2个服务器套接字,例如23和24。 将我的HotSpot配置文件切换到B后,拆除这些服务器套接字并在HotSpot B端口23,24和25上创建3个服务器套接字。 现在大部分时间都适用。但是大约10%的时间,我在端口23或24或两者上得到套接字绑定异常。 这就是我创建服务器套接字的方式: -

public ServerSocketThread(Context context,String serviceName,int port) throws IOException {
    try {
        mContext =context;
        _serviceName=serviceName;
        socket = new ServerSocket();
        socket.setReuseAddress(true);
        socket.bind(new InetSocketAddress(port));
        socket.setReceiveBufferSize(10000);
        localPort=socket.getLocalPort();
        peerHandlerMap= new HashMap<Integer,NSDMessageHandler>();
        Logger.i(NSDConstants.TAG, "Socket Started Port Number " + localPort );
    } catch (IOException e) {
        Logger.e(NSDConstants.TAG, "IO Exception while creating server Socket");
        e.printStackTrace();
        socket=null;
        pool.shutdownNow();
        throw e;
    }
}

我尝试了一种方法,我关闭热点20秒,然后重新启动最后一个配置文件。我想给Server Socket端口一些时间来拆卸。但很少它再次开始工作。大多数时候我收到同样的例外。

我知道原因可能是旧的端口/地址仍在使用中。 任何解决方案?

0 个答案:

没有答案