Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1. static void Main()
  2. {
  3. Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
  4. IPEndPoint localEP = new IPEndPoint(IPAddress.Any, 0);
  5. socket.Bind(localEP);
  6. while( my_condition){
  7. Receive();}
  8. }
  9.  
  10. private bool Receive()
  11. {
  12. received = false;
  13.  
  14. if (socket != null)
  15. {
  16. SocketAsyncEventArgs ae = new SocketAsyncEventArgs();
  17. ae.SetBuffer(recvBuffer, 0, recvBuffer.Length);
  18.  
  19. // callback
  20. EventHandler<SocketAsyncEventArgs> rcb = new EventHandler<SocketAsyncEventArgs>(ReceiveCallback);
  21. ae.Completed += rcb;
  22.  
  23. socket.ReceiveAsync(ae);
  24.  
  25. int counter = 0;
  26. int recv_timeout = 500;
  27.  
  28. // create a delay waiting for data
  29. while (!received && counter <= recv_timeout)
  30. {
  31. double nanosecs = recv_timeout * 1000;
  32. long nanosperTick = (1000L * 1000L * 1000L) / Stopwatch.Frequency;
  33.  
  34. int ticks = (int)(nanosecs / nanosperTick);
  35.  
  36. Stopwatch sw = Stopwatch.StartNew();
  37.  
  38. while (sw.ElapsedTicks < ticks) { }
  39.  
  40. sw.Stop();
  41.  
  42. counter++;
  43. }
  44.  
  45. ae.Completed -= rcb;
  46. ae.Dispose();
  47. }
  48.  
  49. return received;
  50. }
  51.  
  52. private void ReceiveCallback(object sender, SocketAsyncEventArgs e)
  53. {
  54. switch (e.LastOperation)
  55. {
  56. case SocketAsyncOperation.Receive:
  57. if (e.BytesTransferred == Number_of_bytes_I_wait_for)
  58. {
  59. //get e.Buffer !
  60. }
  61. else
  62. Console.WriteLine("??? number_of_bytes received: " + e.BytesTransferred);
  63. break;
  64. }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement