无法通过套接字连接到其他设备

时间:2018-03-31 12:47:32

标签: java android sockets serversocket wifip2p

我正在开发无线文件共享应用。我创建了2个不同的AsyncTasks,一个用于发送,一个用于接收。 在用于发送数据的类中,以下是我用于连接的代码片段。

client = new Socket();
client.bind(null);
client.connect(new InetSocketAddress(groupOwnerAddress, 8888));

在用于接收数据的类中,我创建了一个ServerSocket和一个Socket,然后调用

server = new ServerSocket(8888);
client = server.accept();

我的设备由于某种原因没有相互连接。在我发送数据的设备中,我在日志中收到以下消息。

我很确定我的IP地址没错,因为我使用WifiP2pManager的connect()方法连接了2台设备。然后我通过请求组信息获得IP地址。

java.net.ConnectException: failed to connect to /192.168.49.1 (port 8888) from /:: (port 38275): connect failed: ECONNREFUSED (Connection refused)

错误指向此行

client.connect(new InetSocketAddress(groupOwnerAddress, 8888));

我在线查看了错误并且说端口没有监听..但是当我调试接收设备时,我可以看到调试器在此行停止

client = server.accept();

据我所知,这意味着设备正在侦听端口。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

确保服务器套接字(接收方)先运行然后运行发送方套接字(发送方)意味着如果先运行发送方套接字,然后启动服务器套接字,则使发送方和接收方之间的起始区别为5到8秒连接失败错误可能会出现。

如果您正在使用,从java.io发送大文件不是一个好的选择。使用java.nio包处理大文件请参阅此http://www.coderpanda.com/java-socket-programming-transferring-large-sized-files-through-socket/