C#无法创建正确的http侦听器

问题描述

我正在尝试创建一个HTTP侦听器,该侦听器可以捕获启动服务器(一个exe文件)时发送的json消息。服务器一旦启动并准备就绪,就会发出一定数量的消息。知道已准备就绪的唯一方法是通过收听这些消息。

对我唯一有用的是这个简化的代码,它只捕获发送的第一条消息。

class ListenToMessages
{
    public static List<string> playbackMessages = new List<string>();
    public static void ListenToServerMessages() { ListenToServerMessagesBase().Wait(); }
    
    private static async Task ListenToServerMessagesBase()
    {
        try
        {
            using (var client = new HttpClient())
            {
                //var result = await client.GetAsync("http://localhost:8888/server/commmessages");
                var content = await client.GetStringAsync("http://localhost:8888/server/commmessages");
                if (content != "[]")
                {
                    Console.WriteLine(" received message from http://localhost:8888/server/commmessages: '{0}'",content);
                    playbackMessages.Add(content);
                }
            }
        }
        catch (Exception ex) { Console.WriteLine(ex.ToString()); }
    }
}

即使我将对ListenToServerMessages的调用放在循环中,它也仍然只会捕获第一条消息。这种方法的问题在于,它可能会错过捕获某些消息的机会,因此这似乎不是一个确定的方法

然后我尝试创建一个简单的侦听器,但这将在GetContext()处停止,然后必须停止该应用程序。

class SimpleListener
{
    // This example requires the System and System.Net namespaces.
    public static void SimpleListenerExample(string prefix = "http://localhost:8888/server/commmessages" )
    {
        if (string.IsNullOrEmpty(prefix)) prefix = "http://localhost:8888/server/commmessages";
        HttpListener listener = new HttpListener();
        listener.Prefixes.Add(prefix);
        listener.Start();
        Console.WriteLine("Listening...");
        // Note: The GetContext method blocks while waiting for a request.
        HttpListenerContext context = listener.GetContext();
        // Obtain a response object.
        HttpListenerResponse response = context.Response;
        
        // print messages
        Console.WriteLine(response.StatusCode);
        Console.WriteLine(response.ContentType);
        Console.WriteLine(response.ToString());
        listener.Stop();
    }
}

在这里可能做错了什么?感谢您的帮助

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...