如何将结果保存在执行命令的字符串中

时间:2019-01-26 16:53:26

标签: c#

正如标题所述,如何将执行的命令的结果保存在字符串中?

SendCommand("server.hostname");

我的代码:

public void SendCommand(string command)
{
    PacketModel packet = new PacketModel()
    {
        Identifier = 1,
        Message = command,
        Name = "RustManager"
    };
    string packetString = JsonConvert.SerializeObject(packet);
    _webSocket.SendAsync(packetString, null);
}

public void GetServerHostname()
{
    SendCommand("server.hostname");
}

1 个答案:

答案 0 :(得分:3)

由于我的声誉不高,我无法评论-这是我在那之前会做的事情。

通常以Async结尾的方法是异步的,并返回Task<T>类型。 使用await关键字会使您的方法异步,这就是为什么必须在方法标题中将其标记为async的原因。 Link to C#-Documentation on the await keyword

由于我没有很多信息,因此很难说如何运行代码,但这也许会有所帮助:

public async void SendCommand(string command)
{
   PacketModel packet = new PacketModel()
   {
     Identifier = 1,
     Message = command,
     Name = "RustManager"
   };
   string packetString = JsonConvert.SerializeObject(packet);
   var result = await _webSocket.SendAsync(packetString, null);
}

编辑1: 获得一些新信息后,这是我的新答案: 您将this类用于websocket。如果您查看“ SendAsync”方法的签名,就会发现它返回void(表示“无”)。因此,您将无法在此处“存储某种信息”。 该方法如下所示:

public void SendAsync (string data, Action<bool> completed) { [...] }

您将必须侦听WebSocket并等待服务器端响应。似乎该库通过事件来支持该操作:

ws.OnMessage += (sender, e) => { ... };

因此,您可以定义事件处理程序来处理服务器响应。

  

如果要获取消息数据,则应访问e.Data或e.RawData属性。   e.Data属性返回一个字符串,因此它主要用于获取文本消息数据。   (source (GitHub Readme)

因此,要满足您的愿望,请尝试以下操作:

1。)在_websocket实例初始化时,使用相应的事件处理程序订阅.OnMessage事件。 (Some information about that

2。)使用SendAsync

立即发送消息

3。)如果您的服务器以对网络套接字的消息作为响应,则将触发OnMessage事件,您将能够从事件参数e中获取数据

(我没有对此进行测试-但它应该可以正常工作,因为示例中使用了这种方式)