本帖最后由 wtujoxk 于 2022-5-25 13:58 编辑
软件使用UDP协议编写,针对多媒体中控控制电脑的音量,关机,心跳这三个功能进行编写!
通讯协议在说明栏中,运行软件会在当前目录下生成一个config.txt文件,里面保存了设置!
修改参数设置后,记得点一下保存!
下载地址:https://nns.lanzoub.com/iChp405dce2h
调试助手下载地址:https://nns.lanzoub.com/iq1D305dcpgh
使用调试助手可以测试软件可用性!
20220525添加心跳测试小软件
用法见下图
心跳测试小软件下载:https://nns.lanzoub.com/iEVjg05etele
源码:
[C#] 纯文本查看 复制代码 using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Threading;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
namespace 心跳测试
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//在线电脑集合
Dictionary<string, DateTime> dicComputer = new Dictionary<string, DateTime>();
private void Form1_Load(object sender, EventArgs e)
{
new Thread(() =>
{
UdpClient uc = new UdpClient(new IPEndPoint(IPAddress.Any, 5467));
//设置UDP超时接收时间
uc.Client.ReceiveTimeout = 4000;
while (true)
{
try
{
IPEndPoint ipEndPoint = null;
byte[] bytes = uc.Receive(ref ipEndPoint);
this.Invoke((EventHandler)delegate { textBox1.Text = string.Empty; });
string computer = ipEndPoint.Address.ToString();
if (!dicComputer.ContainsKey(computer))
dicComputer.Add(computer, DateTime.Now);
else
dicComputer[computer] = DateTime.Now;
//心跳时间为2秒一次,筛选离线电脑
dicComputer = dicComputer.Where(x => (DateTime.Now - x.Value).Seconds < 4).ToDictionary(x => x.Key, x => x.Value);
foreach (var onlineComputer in dicComputer)
{
this.Invoke((EventHandler)delegate
{
textBox1.AppendText(onlineComputer + " 电脑在线" + Environment.NewLine);
});
}
}
catch (Exception ex)
{
//心跳时间为2秒一次,如果服务端4秒钟都未收到新消息,则认为所有电脑离线
this.Invoke((EventHandler)delegate { textBox1.Text = "没有电脑在线"; });
}
}
})
{ IsBackground = true }.Start();
}
}
} |