C# c语言异步socket通信中可变大小数据的接收#
我正在用c#编写一个应用程序。在该应用程序中,我使用异步套接字通信。我编写了如下代码: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
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