自学内容网 自学内容网

在一台电脑上实现网页与exe程序使用udp通信

要在同一台电脑上实现网页(前端)与 EXE 程序(后端)通过 UDP 通信,可以使用以下步骤。前端可以使用 JavaScript 通过 WebSocket 与自定义服务器进行通信,该服务器通过 UDP 发送和接收数据,再与 EXE 程序进行交互。由于浏览器本身不直接支持 UDP 通信,我们需要一个中间层来处理 UDP 数据传输。

以下是一个简单的示例,包括前端和后端代码。

前端(网页)

我们将使用 WebSocket 来与自定义服务器通信。

<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <meta name="viewport" content="width=device-width, initial-scale=1.0">  
    <title>UDP Communication</title>  
</head>  
<body>  
    <h1>UDP Communication with EXE</h1>  
    <input type="text" id="message" placeholder="Enter message">  
    <button onclick="sendMessage()">Send Message</button>  
    <p id="response"></p>  
  
    <script>  
        const ws = new WebSocket('ws://localhost:8080');  
  
        ws.onopen = function(event) {  
            console.log('WebSocket is open now.');  
        };  
  
        ws.onmessage = function(event) {  
            document.getElementById('response').innerText = 'Received from EXE: ' + event.data;  
        };  
  
        ws.onclose = function(event) {  
            console.log('WebSocket is closed now.');  
        };  
  
        function sendMessage() {  
            const message = document.getElementById('message').value;  
            ws.send(message);  
        }  
    </script>  
</body>  
</html>

后端(Node.js 自定义服务器)

我们将使用 Node.js 创建一个 WebSocket 服务器,并使用 dgram 模块进行 UDP 通信。

 1.安装 Node.js 和必要的模块。

//cmd
npm install ws

2.创建 WebSocket 服务器与 UDP 客户端。

//javascript

const WebSocket = require('ws');  
const dgram = require('dgram');  
const server = new WebSocket.Server({ port: 8080 });  
  
const udpClient = dgram.createSocket('udp4');  
  
// UDP 服务器地址和端口  
const udpServerAddress = '127.0.0.1';  
const udpServerPort = 41234;  
  
udpClient.on('message', (msg, rinfo) => {  
    console.log(`UDP Message from ${rinfo.address}:${rinfo.port} - ${msg}`);  
    // 将从 EXE 程序接收到的消息通过 WebSocket 发送给网页  
    server.clients.forEach(client => {  
        if (client.readyState === WebSocket.OPEN) {  
            client.send(msg);  
        }  
    });  
});  
  
udpClient.on('listening', () => {  
    const address = udpClient.address();  
    console.log(`UDP Client listening on ${address.address}:${address.port}`);  
});  
  
udpClient.bind(41235); // UDP 客户端端口  
  
server.on('connection', (ws) => {  
    console.log('New client connected');  
  
    ws.on('message', (message) => {  
        console.log(`Received message => ${message}`);  
        // 将从网页接收到的消息通过 UDP 发送给 EXE 程序  
        const buf = Buffer.from(message);  
        udpClient.send(buf, 0, buf.length, udpServerPort, udpServerAddress, (err) => {  
            if (err) {  
                console.error(err);  
                ws.close();  
            } else {  
                console.log('UDP message sent');  
            }  
        });  
    });  
  
    ws.on('close', () => {  
        console.log('Client has disconnected');  
    });  
});  
  
console.log('WebSocket server is running on ws://localhost:8080');

详细参见:使用 Node.js 创建一个 WebSocket 服务器-CSDN博客 

EXE 程序(C# 示例)

以下是一个简单的 C# UDP 服务器示例,用于接收和发送 UDP 数据。

  1. 创建一个新的 C# 控制台应用程序。
  2. 使用以下代码:
//c#

using System;  
using System.Net;  
using System.Net.Sockets;  
using System.Text;  
  
class UdpServer  
{  
    static void Main()  
    {  
        UdpClient udpListener = new UdpClient(41234);  
        IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, 41234);  
  
        try  
        {  
            while (true)  
            {  
                Console.WriteLine("Waiting for a connection...");  
                byte[] bytes = udpListener.Receive(ref groupEP);  
                string receivedData = Encoding.ASCII.GetString(bytes, 0, bytes.Length);  
  
                Console.WriteLine($"Received: {receivedData} from {groupEP}");  
  
                // 处理接收到的数据并发送响应  
                string response = "Hello from EXE";  
                byte[] sendBytes = Encoding.ASCII.GetBytes(response);  
                udpListener.Send(sendBytes, sendBytes.Length, groupEP);  
            }  
        }  
        catch (Exception e)  
        {  
            Console.WriteLine(e.ToString());  
        }  
        finally  
        {  
            udpListener.Close();  
        }  
    }  
}

 

运行步骤

  1. 启动 C# UDP 服务器。
  2. 启动 Node.js WebSocket 服务器。
  3. 打开网页并发送消息。

这样,网页上的消息会通过 WebSocket 发送到 Node.js 服务器,Node.js 服务器再通过 UDP 发送到 C# EXE 程序。C# EXE 程序处理完消息后,可以通过 UDP 发送响应,Node.js 服务器再通过 WebSocket 将响应发送到网页。


原文地址:https://blog.csdn.net/wangchaohpu/article/details/142682158

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!