! 我正在开发一个Android应用程序,允许与附近已安装此应用程序的设备聊天。为了做到这一点,我使用Wi-Fi P2P API和网络服务发现来搜索附近的设备。 我已经编写了用于在服务启动的线程中搜索附近设备的代码。当检测到设备时,服务将它(通过广播意图)发送到显示到目前为止检测到的设备的活动。 检测到的设备被添加到recyclerView中,并且当用户按下其中一个时,必须建立到该设备的连接。 成功建立Wi-Fi Direct连接(即,WifiP2pManager.connect()方法成功),并捕获WIFI_P2P_CONNECTION_CHANGED_ACTION。 在广播接收机中,当这样的广播意图落入,下面的代码被执行:当通过Wi-Fi P2P使用网络服务发现时无法连接到Android设备每个人都可以使用网络服务发现

NetworkInfo networkInfo = (NetworkInfo) intent.getParcelableExtra(WifiP2pManager.EXTRA_NETWORK_INFO);

if (networkInfo.isConnected()) {

mManager.requestConnectionInfo(mChannel, connectionInfoListener); }

随着requestConnectionInfo()方法我可以获取有关的连接,如装置I的IP地址的信息试图连接到。 为了获取这些信息,我提供了一个WifiP2pManager.ConnectionInfoListener实现,该实现由connectionInfoListener变量表示。 这是我实现WifiP2pManager.ConnectionInfoListener的代码: ​​

“设备”是我实现广播接收器的现在正好是不重要的实例变量。相反,重要的是ConnectThread线程。这是处理在两个设备之间连接套接字所需的代码的线程。当我尝试连接到一个检测装置,ConnectThread在其run()方法,创建ChatConnection路过的IP地址和先前获得这一构造的端口号的新实例:

public ChatConnection(InetAddress srvAddress, int srvPort, String macAddress) throws IOException {

...

connSocket = new Socket(srvAddress, srvPort);

...

}

这里是哪里发生问题。当我测试物理设备上我的应用程序,我得到的是这样的例外:

W/System.err: java.net.ConnectException: failed to connect to /192.168.49.1 (port 6770): connect failed: ECONNREFUSED (Connection refused)

当然,我安装我的第二个物理设备上也应用程序,它被成功地检测和一个Wi-Fi直连连接获得成功建立。但是,当涉及到这行代码:

connSocket = new Socket(srvAddress, srvPort);

即抛出异常...... 我对这个问题的长度道歉,但我想是最清楚的。 我真的很感谢你提供任何帮助。

编辑:我忘了提及初始化ServerSocket的代码。

ServerSocket在Wi-Fi启用后立即启动的线程中进行初始化。

即,当WifiP2pBroadcastReceiver(内部类延伸的BroadcastReceiver应用的服务的)捕获一个WIFI_P2P_STATE_CHANGED_ACTION意图,它会检查是否在Wi-Fi使能,并且如果启用,则启动其中的ServerSocket位于螺纹:

public void onReceive(Context context, Intent intent) {

String action = intent.getAction();

if (action.equals(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION)) {

int statoWiFi = intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE, -1);

if (statoWiFi == WifiP2pManager.WIFI_P2P_STATE_ENABLED) {

mNsdService = new NsdProviderThread();

mNsdService.start();

}

将ServerSocket被初始化在NsdProviderThread的run()方法:

public void run() {

...

try {

server = new ServerSocket(0);

} catch (IOException ex) {

return;

}

...

while (!Thread.currentThread().isInterrupted()) {

Socket clientSocket = null;

try {

clientSocket = server.accept();

} catch (IOException ex) {

break;

}

try {

ChatConnection chatConn = new ChatConnection(clientSocket);

synchronized (connections) {

connections.add(chatConn);

}

} catch (IOException ex) {

continue;

}

}

“服务器” 是NsdProviderThread的一个实例变量声明为ServerSocket的。

2016-11-04

Nilio

+1

你需要一个ServerSocket接受来自其他设备.... –

+0

Socket连接我感谢您的评论。我刚刚编辑了我的问题,并添加了有关ServerSocket的更多信息。 –

android p2p 连接服务器上,当通过Wi-Fi P2P使用网络服务发现时无法连接到Android设备每个人都可以使用网络服务发现...相关推荐

  1. 客户端(STS)连接服务器上redis时的问题

    [问题] 在本地客户端(STS)跑springboot连接服务器上面的redis时,一直报错连不上,服务器上redis已经关闭了protected-mode,防火墙已经关闭 [原因] 服务器redis ...

  2. vs2008 64位 如何连接64位oracle,vs2008中如何连接服务器上Oracle实例?

    vs2008中如何连接服务器上Oracle实例? 本地机器tnsnames.ora ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = f ...

  3. Xshell远程连接服务器上的jupyter notebook

    用Xshell远程连接服务器上的jupyter notebook 今天浅写一下在Xshell远程连接服务器上已有的jupyter notebook,以后更新一下如何在服务器上部署jupyter not ...

  4. 解决Android Studio连接不上逍遥模拟器的问题

    H:\app\Microvirt\MEmu\adb.exe start-serverH:\app\AndroidSDK\platform-tools\adb.exe connect 127.0.0.1 ...

  5. navicat怎么连接虚拟服务器,navicat怎么连接服务器上的数据库

    navicat怎么连接服务器上的数据库 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云 ...

  6. wav文件 服务器失败,.wav存储在服务器上的声音文件在加载web应用程序时无法播放...

    这是我试图实现的场景:与Web应用程序存储在同一服务器上的声音,在客户端遇到条件时播放.当我在IDE中运行它并将webconfig更改为指向数据库所在的服务器时,它完美地工作.但是,当我部署并通过浏览 ...

  7. p2p云服务是什么_p2p云服务器是什么(p2p连接不上服务器是什么问题)

    困惑好久了,网上现在好像还没有权威的解释? 是云计算技术 云计算(cloud computing),分布式计算技术的一种,其最基本的概. 再交由多部服务器所组成的庞大系统经搜寻.计算分析之后将处理结果 ...

  8. 安装 | Android studio连接不上真机解决办法(电脑安装虚拟机不成功的情况下)

    博主github:https://github.com/MichaelBeechan 博主CSDN:https://blog.csdn.net/u011344545 **很多人安装Android St ...

  9. win7连接sftp_SFTP远程连接服务器上传下载文件-vs2013项目实例

    本项目仅测试远程连接服务器,支持上传,下载文件,更多功能开发请看API自行开发. 环境:win7系统,vs2013 vs2013项目实例下载地址:CSDN下载 如果没有CSDN积分,百度网盘下载(密码 ...

最新文章

  1. CSS 工程化 小结
  2. 卷积神经网络算法的一个实现
  3. decimal是( )数据类型_SQL 通用数据类型
  4. Vue+iview实现自定义格式导出Excel文件
  5. Web常见漏洞修复建议
  6. 一个500强公司的数据化运营管理实践
  7. Java基础教程【第二章:Java数据类型和变量】
  8. 数据结构 枚举学习笔记
  9. Vue经典开源项目汇总
  10. OSAL启动过程分析
  11. 印象笔记中可以使用html语言吗,你知道吗,在印象笔记里也能用 Markdown 写作
  12. 嵌入式工程师必须知道的一些好网站
  13. CAD等比例缩放图形
  14. 4点策略教你如何做好社群营销
  15. 【信号去噪】基于NLM时间序列心电信号去噪附matlab代码
  16. 隐私泄露防不胜防,真的没有办法了吗?
  17. CentOS7.0 搭建zabbix 5.0 实现监控华为交换机运行状态并实现邮件告警
  18. nmon在linux应用
  19. 重磅消息:Lazada和Shopee通过中国执照就可以开通本地店铺,享受更多的流量和资源扶持
  20. C++ Builder ADO数据库连接与保存

热门文章

  1. html代码彼德西餐厅网页,彼德西餐厅设计解析 让你装修不再烦恼
  2. 这2个实用小技巧,可以帮你将黑白照片变彩色
  3. ubuntu18.04或20.04 安装显卡驱动
  4. 联想昭阳E4电脑U盘安装Win10系统操作教学
  5. 04 数组习题的整理
  6. java mongodb 查询 游标_MongoDB find()方法:查询数据
  7. Endnote下载的pdf文件合并到同一个文件夹
  8. etc通行费发票怎么打印?通行费发票打印步骤
  9. 向模拟器的sdcard中添加文件
  10. 汉字的Unicode 内码