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

Unable to connect to other device via socket

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

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

在用于接收数据的class中,我创建了一个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();

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

感谢任何帮助。

确保服务器套接字(接收方)先运行然后运行发送方套接字(发送方)意味着发送方和接收方之间的起始差异为5到8秒,如果你运行 sender socket 先启动 server socket 这个 connection failed error could be come.

如果您是 using.Use 用于处理大文件的 java.nio 包,那么从 java.io 发送大文件不是好的选择请参阅此 http://www.coderpanda.com/java-socket-programming-transferring-large-sized-files-through-socket/