0

我正在用 c# 制作一个应用程序。在那个应用程序中我使用异步套接字通信。我编写的代码为

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

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

4

1 回答 1

2

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

public int EndReceiveFrom(
      IAsyncResult asyncResult,
      ref EndPoint endPoint
  )

正如 MSDN 所说:

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

于 2013-04-02T13:53:56.730 回答