c#UDP EndReceive()数据在使用时变为空

时间:2011-09-27 15:54:33

标签: c# asynchronous udp

这是一个奇怪的,我无法找到任何其他问题,所以我假设我是一个骨头。真的很感激一些帮助!

我正在使用C#UdpClient的BeginReceive()/ EndReceive()方法来实现异步读取。我开始阅读:

void startReading() {
  udpClient.BeginReceive(new AsynchCallback(asynchRead), null);
}

asynchRead()方法如下所示:

void asynchRead(IAsynchResult result) {
  nextData = udpClient.EndReceive(result, ref anyIPEndPoint);
}

,其中

private Byte[] nextData;

IPEndPoint andIPEndPoint = new IPEndPoint(IPAddress.Any, 0);

是全球性的。

稍后我尝试使用'nextData',如下所示:

anotherMethod(nextData);

在anotherMethod()中给出了一个未处理的空指针异常。在调试的同时,我可以看到在调用anotherMethod()之前'nextData'中有数据,但在anotherMethod()中,传递的变量为null。

我在这里做了一些明显错误的事吗?

非常感谢。

编辑:

anotherMethod(),部分看起来像这样:

void anotherMethod(Byte[] dataBytes) {
  Byte[] data = new Byte[dataBytes.Length - 4];   <- this is where exception occurs
  ...
}

0 个答案:

没有答案