我正在开发无线文件共享应用。我创建了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();
据我所知,这意味着设备正在侦听端口。
感谢任何帮助。
答案 0 :(得分:1)
确保服务器套接字(接收方)先运行然后运行发送方套接字(发送方)意味着如果先运行发送方套接字,然后启动服务器套接字,则使发送方和接收方之间的起始区别为5到8秒连接失败错误可能会出现。
如果您正在使用,从java.io发送大文件不是一个好的选择。使用java.nio包处理大文件请参阅此http://www.coderpanda.com/java-socket-programming-transferring-large-sized-files-through-socket/