我正在使用下面的代碼來接收消息(我正在使用這種方式,因爲我正在等待消息時做某事)但是,我正在測試這個連接,並且我發送的消息非常接近彼此,但似乎其中一個失去了。我不知道如何解決這個問題。我怎樣才能啓用「讀取緩衝區」選項或類似的東西?異步Udp消息的緩衝區
感謝..這裏是代碼:
//函數接收UDP消息
public static void ReceiveCallback(IAsyncResult ar)
{
UdpClient u = (UdpClient)((UdpState)(ar.AsyncState)).u;
//IPEndPoint e = (IPEndPoint)((UdpState)(ar.AsyncState)).e;
Byte[] receiveBytes = u.EndReceive(ar, ref IpEndPoint_groupEP);
received_data_from_client = Encoding.ASCII.GetString(receiveBytes);
messageReceived = true;
Logger("Received a message from : " + IpEndPoint_groupEP.ToString());
u.Close();
}
public static void ReceiveMessages()
{
IpEndPoint_groupEP.Address = (IPAddress.Any);
IpEndPoint_groupEP.Port = listenPort;
//IPEndPoint e = new IPEndPoint(IPAddress.Any, listenPort);
UdpClient u = new UdpClient(IpEndPoint_groupEP);
UdpState s = new UdpState();
s.e = IpEndPoint_groupEP;
s.u = u;
u.BeginReceive(new AsyncCallback(ReceiveCallback), s);
while (!messageReceived)
{
Thread.Sleep(50);
Console.writeLine("Hello")
}
我有u.close因爲這個函數被調用超過一個。我有一個while循環,所以程序讀取消息並對消息做些什麼,然後當它完成時,循環返回並調用ReceiveMessages函數開始讀取另一條消息。基本上,當程序沒有收到消息時,它大喊'你好'
它的工作就像一個魅力。不過,我意識到,當兩個或更多的消息同時到達,它只是讀其中之一,我失去了其他的
你在'ReceiveCallback'中執行'u.Close()',你爲什麼期望它能夠多次運行? –
對不起,我剛剛更新.. – George