异步客户端套接字c#我该如何在不阻塞程序运行的情况下循环等待来自服务器的信息?

问题描述

我创建了与TCP服务器进行通信的类,

public class Tcp_client_server_communication
{
    private static TcpClient client;
    private static String response = String.Empty;

    public void Initialize(string ip,int port)
    {
        client = new TcpClient(ip,port);

    }
    public string BeginRead()
    {
        var buffer = new byte[16];
        var ns = client.GetStream();
        ns.BeginRead(buffer,buffer.Length,EndRead,buffer);
     
    }

    public void EndRead(IAsyncResult result)
    {
        var buffer = (byte[])result.AsyncState;
        var ns = client.GetStream();
        var bytesAvalible = ns.EndRead(result);

        MessageBox.Show(Encoding.ASCII.GetString(buffer));
        BeginRead();

    }
}

要使用这些方法,请使用:

.Initialize();
.BeginRead();

它工作正常,但我想以多行TextBox而不是MessageBox的形式显示来自服务器的每条消息。

我该怎么做?

解决方法

好吧,您可以创建一个List对象来保存所有传递的消息,然后将Timer设置为经常检查列表是否已添加到其中。在将消息添加到文本框中后,从列表中删除您在每个刻度上阅读的内容。

这个项目要比那时复杂一些,但这是我在中学时期从事的一个老项目:https://github.com/Taloreal/Server-Essentials

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...