C# c语言异步socket通信中可变大小数据的接收#

C# c语言异步socket通信中可变大小数据的接收#,c#,visual-studio-2010,sockets,asynchronous,udp,C#,Visual Studio 2010,Sockets,Asynchronous,Udp,我正在用c#编写一个应用程序。在该应用程序中,我使用异步套接字通信。我编写了如下代码: byte[] byteData = new byte[1024]; clientSocket.BeginReceiveFrom(byteData, 0, byteData.Length, SocketFlags.None, ref m_EpReceive, new AsyncCallback(OnRceiveCallBack), objReceiverSocketState); 这里我得到的是可变大小的by

我正在用c#编写一个应用程序。在该应用程序中,我使用异步套接字通信。我编写了如下代码:

byte[] byteData = new byte[1024];
clientSocket.BeginReceiveFrom(byteData, 0, byteData.Length, SocketFlags.None, ref m_EpReceive, new AsyncCallback(OnRceiveCallBack), objReceiverSocketState);

这里我得到的是可变大小的
byteData
,意味着大约700字节,276字节(不固定)。这里我声明了1024个大小的
byteData
。所以我的问题是,有没有任何方法可以将
字节数据的大小声明为接收到的确切数据量?(意味着假设我得到了500个字节,那么
byteData
的大小应该是500。)我还有一个问题,如果我将
byteData
的大小声明为1024,那么它是否会等待获得总共1024个字节,或者如果它得到了一些字节,那么它将调用
OnRceiveCallBack
方法?请帮帮我。提前感谢。

EndReceiveFrom
将告诉您已收到多少字节

public int EndReceiveFrom(
      IAsyncResult asyncResult,
      ref EndPoint endPoint
  )
正如MSDN所说:

返回值
类型:System.Int32
如果成功,则为字节数 收到。如果不成功,则返回0