【WPF】扫描的方式发现局域网中的Android设备

C#部分

扫描局域网的IP地址范围

检查每个IP地址是否可达

using System.Net;
using System.Net.Sockets;public static class NetworkScanner
{public static List<IPAddress> ScanLocalNetwork(){List<IPAddress> devices = new List<IPAddress>();string localIP = GetLocalIPAddress();string[] ipParts = localIP.Split('.');string baseIP = ipParts[0] + "." + ipParts[1] + "." + ipParts[2] + ".";for (int i = 1; i < 255; i++){string ip = baseIP + i.ToString();// Ping the IP address to check if it's reachablePing ping = new Ping();PingReply reply = ping.Send(ip, 100); // Timeout set to 100msif (reply.Status == IPStatus.Success){devices.Add(IPAddress.Parse(ip));}}return devices;}private static string GetLocalIPAddress(){IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());foreach (IPAddress ip in host.AddressList){if (ip.AddressFamily == AddressFamily.InterNetwork){return ip.ToString();}}return "";}
}

上述代码使用Ping类对局域网中的IP地址进行逐个检查,如果某个IP地址能够成功响应则认为该IP地址上有设备存在,可以将其添加到设备列表中。

一旦发现了局域网中的Android设备的IP地址,你可以使用Socket或者其他网络通信库来建立与设备的通信连接。

开始通信

csharp端建立Socket进行连接和通信:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;public static class NetworkCommunication
{private const int Port = 12345; // 修改为你自己的端口号public static void ConnectAndCommunicate(IPAddress deviceIP){try{// 建立Socket连接Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);IPEndPoint endPoint = new IPEndPoint(deviceIP, Port);socket.Connect(endPoint);Console.WriteLine("Connected to device: " + deviceIP);// 发送数据string message = "Hello, Android device!";byte[] data = Encoding.UTF8.GetBytes(message);socket.Send(data);// 接收数据byte[] buffer = new byte[1024];int bytesRead = socket.Receive(buffer);string receivedMessage = Encoding.UTF8.GetString(buffer, 0, bytesRead);Console.WriteLine("Received message: " + receivedMessage);// 关闭连接socket.Shutdown(SocketShutdown.Both);socket.Close();}catch (Exception ex){Console.WriteLine("Error: " + ex.Message);}}
}

上述代码使用Socket类建立与Android设备的连接,发送一条消息,并接收设备返回的消息。你需要将Port的值修改为你自己的端口号。

Android 端

建立与WPF应用程序的连接并进行通信:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;public class NetworkCommunication {private static final String SERVER_IP = "192.168.0.100"; // 修改为你WPF应用程序所在的IP地址private static final int PORT = 12345; // 修改为你WPF应用程序所使用的端口号public static void connectAndCommunicate() {try {// 建立Socket连接Socket socket = new Socket(SERVER_IP, PORT);// 发送数据PrintWriter out = new PrintWriter(socket.getOutputStream(), true);out.println("Hello, WPF application!");// 接收数据BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));String receivedMessage = in.readLine();System.out.println("Received message: " + receivedMessage);// 关闭连接out.close();in.close();socket.close();} catch (IOException e) {e.printStackTrace();}}
}

上述代码使用Socket类建立与WPF应用程序的连接,发送一条消息,并接收WPF应用程序返回的消息。

在你的Android应用程序中,可以调用connectAndCommunicate方法以与WPF应用程序建立连接并进行通信。

请注意,你需要将SERVER_IP修改为你WPF应用程序所在的IP地址,并将PORT修改为WPF应用程序所使用的端口号。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/203292.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI伦理专题报告:2023年全球人工智能伦理治理报告

今天分享的是人工智能系列深度研究报告&#xff1a;《AI伦理专题报告&#xff1a;2023年全球人工智能伦理治理报告》。 &#xff08;报告出品方&#xff1a;钛媒体&#xff09; 报告共计&#xff1a;239页 摘要 人工智能(ArtificialIntelligence)作为新一轮科技革命和产业变…

vscode 安装插件

打开VSCode编辑器&#xff0c;点击左侧的扩展图标&#xff08;或使用快捷键CtrlShiftX&#xff09;打开扩展面板。 vue插件 在搜索框中输入"Vue"&#xff0c;会显示出一系列与Vue相关的插件。 1. "Vetur"是一个非常强大的Vue开发插件&#xff0c;它提供…

在 Node-RED 中引入 ECharts 实现数据可视化

Node-RED 提供了强大的可视化工具&#xff0c;而通过引入 ECharts 图表库&#xff0c;您可以更直观地呈现和分析数据。在这篇博客中&#xff0c;我们将介绍两种在 Node-RED 中实现数据可视化的方法&#xff1a;一种是引入本地 ECharts 库&#xff0c;另一种是直接使用 CDN&…

springboot(ssm电商个性化推荐系统 在线销售系统Java(codeLW)

springboot(ssm电商个性化推荐系统 在线销售系统Java(code&LW) 开发语言&#xff1a;Java 框架&#xff1a;ssm/springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysql 5.7&#xff08;或8.0&…

网络和Linux网络_11(数据链路层)以太网(MAC帧)协议+局域网转发+ARP协议

目录 1. 以太网协议 1.1 MAC地址 1.2 以太网帧格式 2. 局域网转发原理 2.1 数据碰撞和交换机 2.2 最大传输单元MTU 3. ARP协议 3.1 ARP协议格式 3.2 模拟APR协议工作过程 3.3 ARP缓存表 4. 重看TCP/IP四层模型 本篇完。 1. 以太网(MAC帧)协议 网络层的IP协议并不是…

Flink基础之DataStream API

流的合并 union联合&#xff1a;被unioin的流中的数据类型必须一致connect连接&#xff1a;合并的两条流的数据类型可以不一致 connec后&#xff0c;得到的是ConnectedStreams合并后需要根据数据流是否经过keyby分区 coConnect: 将两条数据流合并为同一数据类型keyedConnect …

泛洪填充(Flood Fill)

图像形态学是图像处理中的一种基础技术&#xff0c;泛洪填充&#xff08;Flood Fill&#xff09;是其中的一种操作&#xff0c;用于在图像中填充特定区域。 原理和作用 原理 泛洪填充是基于种子点开始的区域生长算法。它从一个种子点开始&#xff0c;通过选择相邻像素并根据一…

什么是数据清洗、特征工程、数据可视化、数据挖掘与建模?

1.1什么是数据清洗、特征工程、数据可视化、数据挖掘与建模&#xff1f; 视频为《Python数据科学应用从入门到精通》张甜 杨维忠 清华大学出版社一书的随书赠送视频讲解1.1节内容。本书已正式出版上市&#xff0c;当当、京东、淘宝等平台热销中&#xff0c;搜索书名即可。内容涵…

Jtti:网站服务器如何预防CC攻击?

CC攻击主要通过大量的请求或连接不断地向目标网站服务器发送流量&#xff0c;以消耗其带宽、资源和处理能力。为了有效应对CC攻击&#xff0c;以下是一些关键的防御策略&#xff1a; 1.使用防火墙 安装和配置一个强大的防火墙是预防CC攻击的首要步骤。防火墙可以根据IP地址、用…

python HTML文件标题解析问题的挑战

引言 在网络爬虫中&#xff0c;HTML文件标题解析扮演着至关重要的角色。正确地解析HTML文件标题可以帮助爬虫准确地获取所需信息&#xff0c;但是在实际操作中&#xff0c;我们常常会面临一些挑战和问题。本文将探讨在Scrapy中解析HTML文件标题时可能遇到的问题&#xff0c;并…

微软 Power Platform 零基础 Power Pages 网页搭建高阶实际案例实践(四)

微软 Power Platform 零基础 Power Pages 网页搭建教程之高阶案例实践学习&#xff08;四&#xff09; Power Pages 实际案例学习进阶 微软 Power Platform 零基础 Power Pages 网页搭建教程之高阶案例实践学习&#xff08;四&#xff09;1、新增视图&#xff0c;添加List页面2…

http的 content-type都有哪些?

HTTP请求中的Content-Type是用来指定请求或者响应的内容类型&#xff0c;告诉浏览器或者相关设备如何显示或处理加载的数据&#xff0c;此属性的值可以查看MIME&#xff08;Multipurpose Internet Mail Extensions&#xff0c;多用途互联网邮件扩展&#xff09;的类型。 如果设…

Java集合进阶(上)

集合 集合在Java开发中应用极为广泛&#xff0c;它其实就是一些常用的数据结构的包装类&#xff0c;分为单列集合&#xff08;Collecton接口类&#xff0c;例如LinkdeList集合&#xff09;和双列集合&#xff08;Map接口类&#xff0c;例如HashMap集合)两种 Collection Coll…

网络层之IP数据报格式、数据报分片、IPv4、子网划分和子网掩码

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

Kubernetes Service控制器详解以及切换为ipvs代理模式

文章目录 一、Service 存在的意义二、Pod与Service的关系三、Service定义与创建四、Service三种常用类型五、Service代理模式六、切换Service代理模式七、service总体工作流程八、kube-proxy ipvs和iptables的异同九、Service DNS名称 一、Service 存在的意义 service的引入主…

【从零开始学习JVM | 第四篇】类加载器的分类以及双亲委派机制

前言&#xff1a; 在Java编程中&#xff0c;类加载器(Class Loader)扮演着重要的角色。类加载器负责加载Java字节码并将其转换为可执行对象&#xff0c;使得我们能够在应用程序中使用各种类和资源。Java类加载器的设计和实现旨在支持动态扩展和模块化编程&#xff0c;为Java语…

管理和监控CentOS上的HTTP服务

CentOS作为一款稳定的开源服务器操作系统&#xff0c;为各种网络服务提供了优秀的支持。其中&#xff0c;HTTP服务是互联网上最常用的服务之一&#xff0c;它为人们提供了便捷的信息访问和交互方式。在CentOS上管理和监控HTTP服务是一项重要的任务&#xff0c;下面我们将介绍一…

【改进YOLOv8】融合感受野注意力卷积RFCBAMConv的杂草分割系统

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义 随着计算机视觉技术的不断发展&#xff0c;图像分割成为了一个重要的研究领域。图像分割可以将图像中的不同对象或区域进行有效的分离&#xff0c;对于许多应用领…

elk+kafka+filebeat

elk1 cd /opt 把filebeat投进去 tar -xf filebeat-6.7.2-linux-x86_64.tar.gz mv filebeat-6.7.2-linux-x86_64 filebeat cd filebeat/ yum -y install nginx systemctl restart nginx vim /usr/share/nginx/html/index.html this is nginx cp filebeat.yml filebeat.yml.…

EPICS modbus 模块数字量读写练习

本文使用modbus slave软件模拟一个受控的modbus设备&#xff0c;此模拟设备提供如下功能&#xff1a; 1、线圈1&#xff0c;起始地址为0&#xff0c;数量为8&#xff0c;软件设置如下(功能码1)&#xff1a; 2、线圈2&#xff0c;起始地址为8&#xff0c;数量为8&#xff0c;软…