首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

NetworkStream.Write立即返回 - 如何判断它何时完成数据发送?

在云计算领域,NetworkStream.Write 是一个常见的方法,用于将数据发送到网络流中。当 NetworkStream.Write 立即返回时,这意味着数据已经被成功地放入发送缓冲区,但并不意味着数据已经被完全发送。为了判断数据何时完全发送,您可以使用以下方法:

  1. 使用 Socket.Poll 方法:Socket.Poll 方法可以检查网络连接的状态。您可以在 NetworkStream.Write 方法返回后,使用 Socket.Poll 方法检查发送缓冲区是否为空。如果发送缓冲区为空,则说明数据已经被完全发送。
代码语言:csharp
复制
socket.SendBufferSize = buffer.Length;
networkStream.Write(buffer, 0, buffer.Length);

while (socket.Poll(1000, SelectMode.SelectWrite))
{
    if (socket.Available == 0)
    {
        // 数据已经被完全发送
        break;
    }
}
  1. 使用 SocketAsyncEventArgs 类:SocketAsyncEventArgs 类提供了一种异步的方式来发送和接收数据。您可以使用 SocketAsyncEventArgs 类来发送数据,并在发送完成时处理事件。
代码语言:csharp
复制
using System.Net.Sockets;

Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
SocketAsyncEventArgs socketAsyncEventArgs = new SocketAsyncEventArgs();
socketAsyncEventArgs.SetBuffer(buffer, 0, buffer.Length);

socket.Connect(remoteEndPoint);
socket.SendAsync(socketAsyncEventArgs);

socketAsyncEventArgs.Completed += (sender, e) =>
{
    if (e.SocketError == SocketError.Success)
    {
        // 数据已经被完全发送
    }
};

在这两种方法中,您都可以判断数据何时完成发送。请注意,这些方法可能需要根据您的具体应用程序进行调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券