Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否存在基于TPL(异步/等待)的套接字抽象?_C#_.net - Fatal编程技术网

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

C# 是否存在基于TPL(异步/等待)的套接字抽象?,c#,.net,C#,.net,我需要编写一个TCP客户端来与服务器通信。看看代码示例(Socket、TcpClient?),考虑到我在C#adventures的其他地方看到的情况,我似乎找不到任何感觉像是“现代”方法的东西 我想我特别希望看到任务和代码,比如等待socket.Connect(args),但我看到的是基于回调的异步或BeginX方法 我的选择是什么?我只是继续做下去,在没有第三方物流的情况下工作,还是有其他方法 非常感谢 没有原始套接字API,没有。我相信BCL团队查看了—已经支持一个完整的同步API和两个完整

我需要编写一个TCP客户端来与服务器通信。看看代码示例(Socket、TcpClient?),考虑到我在C#adventures的其他地方看到的情况,我似乎找不到任何感觉像是“现代”方法的东西

我想我特别希望看到任务和代码,比如
等待socket.Connect(args)
,但我看到的是基于回调的异步或BeginX方法

我的选择是什么?我只是继续做下去,在没有第三方物流的情况下工作,还是有其他方法

非常感谢

没有原始套接字API,没有。我相信BCL团队查看了—已经支持一个完整的同步API和两个完整的异步API—并决定添加第三个完整的异步API太多了

这很容易做到。就我个人而言,我喜欢用扩展方法来实现这一点,这样可以更自然地调用它们


但首先,您应该后退一步,看看是否有任何方法可以避免使用原始套接字。特别是,看看信号器是否有可能。编写正确的原始套接字代码是极其困难的,使用更高级别的抽象将更容易。

看看这个。你也可以看看Stephen Toub在他的博客上的文章。所有这些样本都很糟糕。不要使用APM模式的套接字,因为现在存在等待!此外,还需要考虑是否需要进行异步。同步IO更简单,但没有一半的乐趣!这并不是什么关键任务——我真的很想成为一个能够编写复杂套接字代码的人,所以我觉得这是一个不错的小项目。谢谢你在这里给我的提示,也谢谢你在网上给我的各种其他文章的帮助@莱德内布:那样的话,我有一个可以帮助你的计划。祝你好运我没见过,这本书看起来真的很有用。再次感谢斯蒂芬:-)