2017-10-20 43 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

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