并读取发送到服务器的字符串以激活一个函数

本文关键字:激活 函数 一个 字符串 读取 服务器 | 更新日期: 2023-09-27 18:26:18

我想使用我的遥控器通过TCP/IP激活我的c#应用程序上的一个功能。

我的遥控器上运行着一个程序,它有这样的代码,它将字符串"turnoff"发送到TCP/IP服务器客户端:10.1.1.17是计算机的本地IP,898是监听传入内容的端口。

socket1 = socket.connect("10.1.1.17", 898)
socket.send(socket1, "turnoff'n")

首先,我如何使用这个字符串"hello"来激活我的.net c#应用程序中的一个函数?例如,如果我发送字符串"turnoff",并且我在c#应用程序中有一个名为"turnoff[(])"的函数,我该如何调用这个函数。

我的一个想法是创建一个文本框,让程序从"收到的数据"框中读取文本,如果它被识别,则激活必要的功能。一个看起来像这样的程序:http://gyazo.com/5419901b55fcf404a627b67bdee492f5。我该如何重现?

但是,从文本框中读取字符串似乎不是最有效的方法。当然,还有另一种方法可以将"hello"消息或任何字符串读取到c#程序中,并激活其中的一个函数

此外,我如何在C#中创建一个TCP/IP服务器,该服务器具有一个侦听传入字符串的端口,并可以将内容发送回连接到它的客户端?例如,如果我用遥控器连接到c#服务器,然后按下c#窗体上的按钮将字符串发送回遥控器。这叫异步还是什么的,我真的不确定。

谢谢。

并读取发送到服务器的字符串以激活一个函数

您可以使用我的开源库。

服务器

作为服务器,您通常只需创建一个ChannelTcpListener:

var settings = new ChannelTcpListenerConfiguration(
    () => new MicroMessageDecoder(new DataContractSerializer()),
    () => new MicroMessageEncoder(new DataContractSerializer())
    );
var server = new MicroMessageTcpListener(settings);
server.MessageReceived = OnServerMessage;
server.Start(IPAddress.Any, 1234);

就是这样,你现在只需要一个回调来接收来自所有客户端的消息:

private static void OnServerMessage(ITcpChannel channel, object message)
{
    var command = (DeviceCommand) message;
    //do something with the command
}

客户

在客户端中,您可以执行大致相同的操作,但使用async/await而不是回调。

private static async Task RunClient()
{
    var client = new ChannelTcpClient<object>(
        new MicroMessageEncoder(new DataContractSerializer()),
        new MicroMessageDecoder(new DataContractSerializer())
        );
    await client.ConnectAsync(IPAddress.Parse("192.168.1.3"), 1234);
    await client.SendAsync(new DeviceCommand("turnoff"));
    await client.CloseAsync();
}

安装nuget包"griffin.framework"以使用它。github 上提供的代码