使用wifi直接连接时,套接字无法连接

时间:2017-05-10 04:26:16

标签: java android sockets

我正在尝试在多个设备之间建立连接作为服务器或组所有者和其他作为客户端,我已经使用wifi直接和wifi p2p实现并且正常工作。

在组中连接设备后,我试图在服务器和多个客户端之间建立套接字连接,但我无法使用套接字进行连接。显示以下错误

  

java.net.ConnectException:在5000ms之后无法连接到/192.168.49.1(端口8988):isConnected失败:ECONNREFUSED(拒绝连接)

SockertServer代码

 @Override
  protected Object doInBackground(Object[] params) {
try {
    server = new ServerSocket(8988);
    Log.d("ServerActivity", "Server: Socket opened");

    Log.d("ServerActivity", server.getLocalPort() + "");

    Log.d("ServerActivity", server.getInetAddress() + "");


    Socket client = server.accept();
    Log.d("ServerActivity", "Server: connection done");

    ObjectOutputStream objectOutputStream = new ObjectOutputStream(
            client.getOutputStream()
    );

    objectOutputStream.writeObject("Hie");

    client.close();
    server.close();

} catch (IOException e) {
    e.printStackTrace();
}


return null;
}

客户端套接字

 @Override
          protected Object doInBackground(Object[] params) {
try {
    mSocket = new Socket();

    mSocket.bind(null);
    mSocket.connect((new InetSocketAddress(getAddr, portNo)), SOCKET_TIMEOUT);

    if (mSocket.isConnected()) {
        Log.d("Client Activity", "Socket Connected Successfully");
    } else {
        Log.d("Client Activity", "Socket not  Connected ");
    }

    ObjectInputStream objectOutputStream = new
            ObjectInputStream(mSocket.getInputStream());

    msg = (String) objectOutputStream.readObject();

    message.onMessageSend(msg);
    Log.e(".......................", "Message" + msg);

    objectOutputStream.close();
} catch (IOException e) {
    e.printStackTrace();
} catch (ClassNotFoundException e) {
    e.printStackTrace();
} finally {
    if (mSocket != null) {
        if (mSocket.isConnected()) {
            try {
                mSocket.close();
            } catch (IOException e) {
                // Give up
                e.printStackTrace();
            }
        }
    }
}

return msg;
}

所以任何人都可以帮我解决这个问题。谢谢你提前!!

1 个答案:

答案 0 :(得分:0)

ECONNREFUSED表示尝试连接且远程主机端口未侦听。因此,这可能是由于:

引起的

它是有效的IP吗?使用ifconfig或ipconfig检查。你可以尝试ping服务器。

也可能是由于以下原因:

  • - 服务器无法发送响应:确保后端在提及的IP和端口上正常工作。

  • -SSL连接被阻止。

  • - 请求超时:更改请求超时