【问题标题】:Unable to connect to other device via socket无法通过套接字连接到其他设备
【发布时间】:2018-03-31 12:47:31
【问题描述】:

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

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();

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

感谢任何帮助。

【问题讨论】:

    标签: java android sockets serversocket wifip2p


    【解决方案1】:

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

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

    【讨论】:

    • wifip2p api 本身推荐使用异步任务。所以我不知道你在说什么。至于在接收者套接字之后运行发送者套接字我应该怎么做?
    • 我通过延迟发件人的启动解决了我的问题。所以你的解决方案部分有效。如果您愿意,请编辑您的答案以仅包含该部分,我可以将其标记为正确答案。
    猜你喜欢
    • 2022-11-06
    • 1970-01-01
    • 2019-12-21
    • 1970-01-01
    • 2012-09-30
    • 2021-02-27
    • 2016-05-18
    • 2011-03-13
    • 1970-01-01
    相关资源
    最近更新 更多