获取已经从网络接收且可供读取的数据量。

命名空间:   System.Net.Sockets
程序集:  System(System.dll 中)

从网络接收的、可供读取的数据的字节数。

异常

 
Exception Condition
SocketException

有关更多信息,请参见备注部分。

ObjectDisposedException

Socket 已关闭。

备注
 

Available 返回 0。

获取此代码后,您可以参考 MSDN Library 中的 Windows Sockets 第 2 版 API 错误代码文档,获取有关该错误的详细说明。

注意

.NET Framework 中的网络跟踪。

示例

 

下面的代码示例比较用 FIONREAD 和 Available 属性调用 IOControl 的结果。

 1 // FIONREAD is also available as the "Available" property.
 2 public const int FIONREAD   = 0x4004667F;
 3 
 4 static void DisplayPendingByteCount(Socket s)
 5  {
 6      byte[] outValue = BitConverter.GetBytes(0);
 7 
 8      // Check how many bytes have been received.
 9      s.IOControl(FIONREAD, null, outValue);
10 
11      uint bytesAvailable = BitConverter.ToUInt32(outValue, 0);
12      Console.WriteLine("server has {0} bytes pending. Available property says {1}.",
13          bytesAvailable, s.Available);
14 
15      return;
16  }

Socket.Receive 方法 (Byte[], Int32, SocketFlags)

Socket 接收指定字节数的数据,并将数据存入接收缓冲区。

语法

 

C# 
public int Receive(
	byte[] buffer,
	int size,
	SocketFlags socketFlags
)

参数

buffer

Byte 类型的数组,它是存储接收到的数据的位置。

size

要接收的字节数。

socketFlags

SocketFlags 值的按位组合。

返回值

Type: System.Int32

接收到的字节数。

异常
 

Exception Condition
ArgumentNullException

buffernull

ArgumentOutOfRangeException

size 超出了 buffer 的大小。

SocketException

有关更多信息,请参见备注部分。

ObjectDisposedException

Socket 已关闭。

SecurityException

调用堆栈中的调用方没有所需的权限。

备注
 

Receive。

SocketFlags。

ReceiveFrom 将允许您收到从任何主机传入的数据。

Available 为非零,请重试接收操作。

Receive 方法将立即完成并返回零字节。

SocketException。

注意

获取此代码后,您可以参考 MSDN Library 中的 Windows Sockets 第 2 版 API 错误代码文档,获取有关该错误的详细说明。

注意

.NET Framework 中的网络跟踪。

示例
 

None。

C# 
// Receive the host home page content and loop until all the data is received.
Int32 bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
strRetPage = "Default HTML page on " + server + ":\r\n";
strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);

while (bytes > 0)
{
  bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
  strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);
}

 

相关文章: