是否存在基于TPL(异步/等待)的套接字抽象?

时间:2016-01-28 18:33:34

标签: c# .net

我需要编写一个TCP客户端来与服务器通信。看看代码示例(Socket,TcpClient?),我似乎无法找到任何感觉像现代的#34;考虑到我在C#冒险中的其他地方所见到的方法,这样做的方法。

我想我特别希望看到像await socket.Connect(args)这样的任务和代码,但我会看到基于回调的异步或BeginX方法......

我有什么选择,在这里?我是否只是继续使用并使用没有TPL的东西,还是有其他方法?

非常感谢!

1 个答案:

答案 0 :(得分:5)

没有TAP-based原始套接字API,没有。我相信BCL团队看了Socket class - 它已经支持完整的同步API和两个完整的异步API - 并决定添加第三个完整的异步API也只是得多。

use Task.Factory.FromAsync to wrap the existing Begin/End methods很容易。就个人而言,我喜欢用扩展方法做到这一点,因此可以更自然地调用它们。

但首先你应该退一步看看是否有任何方法来避免使用原始套接字。特别是,看看SignalR是否可能。编写正确的原始套接字代码非常很困难,使用更高级别的抽象会更容易。