2017-10-20 47 views
3

我想在服务器类的HandleConnectionAsync方法中保持打开的tcp连接。它将从客户端接收持续更新。从异步方法获取更新时的C#封装

我希望能收到读者付诸dataFromClient更新,而不必把我的代码在我的服务器实现类之中。 所以:

static void Main(string[] args) 
{ 
    Server s = new Server(); 
    s.start(); 
    //get dataFromClient as it comes in here 
} 

问题是我不知道如何做到这一点。某种回调或事件?

回答

2

有很多种方法。

最少的代码是一个行动传递到您的服务器如:

Server s = new Server(); 
s.start(dataFromClient => 
{ 
    // do something with data from client 
}); 

而且在HandleConnectionAsync调用操作如:

private async void HandleConnectionAsync(TcpClient tcpClient, Action<string> callback) 
{ 
    .. 
    // Console.WriteLine(dataFromClient); 
    callback(dataFromClient); 
    .. 

然而,这并没有解决一些事情例如许多客户同时需要知道哪个客户端是哪个客户端。

+0

谢谢,那正是我所需要的。 –