我需要编写一个TCP客户端来与服务器通信.看看代码示例(Socket,TcpClient?),考虑到我在C#冒险中看到过的其他内容,我似乎无法找到任何感觉像是"现代"方法的方法.
我想我特别希望看到任务和代码await socket.Connect(args),但我看到基于回调的异步或BeginX方法......
我有什么选择,在这里?我是否只是继续使用并使用没有TPL的东西,还是有其他方法?
非常感谢!
没有基于TAP的原始套接字API,没有.我相信BCL团队看了一下这个Socket类 - 它已经支持完整的同步API和两个完整的异步API - 并且决定添加第三个完整的异步API就太多了.
这是很容易使用Task.Factory.FromAsync来包装现有Begin/ End方法.就个人而言,我喜欢使用扩展方法来实现这一点,因此可以更自然地调用它们.
但首先你应该退后一步,看看有没有办法避免使用原始套接字.特别是,看看SignalR是否可能.编写正确的原始套接字代码非常困难,使用更高级别的抽象会更容易.