Socket.Send和Stream.Write有什么区别? (与tcp ip连接有关)

时间:2012-07-24 18:17:30

标签: c# sockets stream send

在处理服务器/客户端连接时,我已经看到这两种方法都有效地使用而没有任何明显的优势,但我怀疑如果没有任何已知的优点,它们都会存在。有谁知道两者之间有明显的差异吗?非常感谢帮助,谢谢。

1 个答案:

答案 0 :(得分:2)

Socket.Send是直接通过WINSOCK层的原始数据发送... Stream缓冲并在发送数据时处理数据。它通常用于需要类似流的功能的情况。显然,那里有一些额外的开销。与Send相比,这种开销包括创建一个新类来管理“流”并在您和Socket.Send之间引入几层间接。 NetworkStream.Write最终只会调用Socket.Send;但这是几层架空下降。

通过使用NetworkStream类型,还可以进行更多工作来设置流。

如果当然,流也可以是双向的,这意味着你可以读取和写入它。您可以使用Receive方法完全正确地读取套接字。

使用SendReceive会将您直接耦合到套接字。如果您使用Stream - 衍生物,则会与Socket分离,并可以免费使用与Stream一起使用的方法/类。