How to clear the intenal buffer of a socket?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Robin the Round

    #1

    How to clear the intenal buffer of a socket?

    Hi,

    I'm writing a UDP Listener to monitor all incoming UDP messages:

    private void ReceiveThreadFk t()
    {
    EndPoint recEP =new IPEndPoint(IPAd dress.Any,6000) ;
    while(false == receiveThreadAb ort)
    {
    // Allow thread to sleep completely
    if(receiveThrea dSleep == false)
    {
    // Read data if available, else sleep 10 ms
    if((0 != udpSocket.Avail able))
    {
    byte[] buffer = new byte[udpSocket.Avail able];
    udpSocket.Recei veFrom(buffer,r ef recEP);
    ReceiveQueueEle ment newElement = new
    ReceiveQueueEle ment(buffer,(IP EndPoint)recEP) ;
    lock(receiveQue ue.SyncRoot)
    {
    receiveQueue.En queue(newElemen t);
    }

    }
    else
    { //no bytes available -> sleep 10 ms
    Thread.Sleep(10 );
    }
    }
    else
    { // if suspended, sleep for 0.3 seconds
    Thread.Sleep(30 0);
    }
    }
    }

    As you can see, this thread can be set to a kind of sleep mode, but when it
    is waken up again, all the udp messages stored within the socket are read out.
    Is there a possibility to clear the socket's internal buffer, so that the
    data which arrived while in sleep mode can be flushed??

    Thanks,

    Robin
Working...