【发布时间】:2010-11-23 11:32:23
【问题描述】:
我有一个 TCP 连接、发送数据块并关闭套接字的发送方。 我想编写完成上述操作的最简单但可靠的程序。 首先想到的是(例如在 .NET 中,尽管这个问题通常与套接字相关):
// assuming LingerOption(false), NoDelay set to whatever
var client = new TcpClient().Connect(server, port);
var stream = client.GetStream();
stream.Write(data, 0, data.Length);
stream.Close();
client.Close();
现在根据阅读各种 MSDN 和其他材料提出一些问题:
- stream.Close() 调用 Socket.Close()。 Socket.Close() 据说关闭 立即丢弃网络 缓冲未发送的数据。这 不好。但是,Socket.Write 文件说,如果 套接字阻塞(它是,通过 默认),Socket.Write 将阻塞 直到发送完所有数据。所以 没问题吧?
- 一般来说,会不会有一种情况,上面的代码 将导致接收器不 接收发送的所有内容 在写? (假设 100% 可靠 网络)
【问题讨论】:
标签: .net tcp sockets communication