[WPF] Kommunizieren Sie zwischen der Anwendung und der LAN-IP des bekannten Android-Geräts

Um zwischen einer WPF-Anwendung und der LAN-IP eines bekannten Android-Geräts zu kommunizieren, können Sie Socket-Kommunikation verwenden. Hier ist ein einfaches Beispiel:

  1. Erstellen Sie ein Socket-Objekt in der WPF-Anwendung und stellen Sie eine Verbindung zur IP-Adresse und Portnummer des Android-Geräts her:
using System.Net.Sockets;

// 创建一个Socket对象
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

// 连接到安卓设备的IP地址和端口号
string ipAddress = "192.168.0.100"; // 假设安卓设备的IP地址是192.168.0.100
int port = 1234; // 假设安卓设备的端口号是1234
socket.Connect(ipAddress, port);
  1. So senden Sie eine Nachricht aus einer WPF-Anwendung an ein Android-Gerät:
// 要发送的消息
string message = "Hello, Android!";

// 将消息转换为字节数组
byte[] buffer = Encoding.UTF8.GetBytes(message);

// 发送消息到安卓设备
socket.Send(buffer);
  1. Erstellen Sie einen Socket-Server auf dem Android-Gerät, um Nachrichten von der WPF-Anwendung zu empfangen. Sie können die Java-Klassen ServerSocket und Socket verwenden, um dies zu erreichen:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

// 创建一个ServerSocket对象并监听指定的端口号
int port = 1234; // 假设监听的端口号是1234
ServerSocket serverSocket = new ServerSocket(port);

// 接受来自WPF应用程序的连接
Socket socket = serverSocket.accept();

// 读取WPF应用程序发送的消息
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String message = reader.readLine();

// 处理接收到的消息
System.out.println("Received message: " + message);

// 关闭连接
socket.close();
serverSocket.close();

Dies ist nur ein einfaches Beispiel. Tatsächliche Anwendungen müssen möglicherweise mehr Fehler und Ausnahmen verarbeiten. Gleichzeitig wird empfohlen, bei der Durchführung der Socket-Kommunikation Faktoren wie Sicherheit und Netzwerkstabilität zu berücksichtigen.

Gehen Sie zu mehreren IPs und versuchen Sie zu kommunizieren

Wenn Sie foreach zum Herstellen von Socket-Verbindungen für mehrere IPs verwenden möchten, können Sie jede IP-Adresse in einer List<string> speichern und dann a>foreach durchläuft die Liste und stellt nacheinander Verbindungen her.

Hier ist ein Beispielcode:

using System;
using System.Collections.Generic;
using System.Net.Sockets;

class Program
{
    
    
    static void Main()
    {
    
    
        List<string> ipAddresses = new List<string>()
        {
    
    
            "192.168.0.100",
            "192.168.0.101",
            "192.168.0.102"
        };

        int port = 1234;

        foreach (string ipAddress in ipAddresses)
        {
    
    
            Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            try
            {
    
    
                socket.Connect(ipAddress, port);
                Console.WriteLine("Connected to: " + ipAddress);
                // 这里可以进行发送和接收数据的操作
            }
            catch (Exception ex)
            {
    
    
                Console.WriteLine("Failed to connect to: " + ipAddress + ", Error: " + ex.Message);
            }
            finally
            {
    
    
                socket.Close();
            }
        }
    }
}

Im obigen Beispiel haben wir eine Liste vom Typ erstellt, die mehrere IP-Adressen speichert. Verwenden Sie dann , um jede IP-Adresse in der Liste zu durchlaufen, erstellen Sie nacheinander Socket-Objekte und versuchen Sie, eine Verbindung herzustellen. Wenn die Verbindung erfolgreich ist, wird eine Verbindungserfolgsmeldung gedruckt, andernfalls wird eine Verbindungsfehlermeldung gedruckt. List<string>ipAddressesforeach

Sie können dieipAddressesListe undportVariablen entsprechend der tatsächlichen Situation an Ihre Bedürfnisse anpassen. Nachdem die Verbindung hergestellt wurde, können Sie am entsprechenden Standort Daten senden und empfangen. Es ist zu beachten, dass nach dem Verbindungsaufbau die Socket-Verbindung umgehend geschlossen werden sollte, um Ressourcen freizugeben.

おすすめ

転載: blog.csdn.net/gao511147456/article/details/134868991