Advertisement
Guest User

Untitled

a guest
Jul 3rd, 2015
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.99 KB | None | 0 0
  1. private int nonBlockRecv(byte[] recvBytes, int offset, int size, SocketFlags sf)
  2. {
  3. int bytesRecv = 0;
  4.  
  5. while (true)
  6. {
  7. try
  8. {
  9. nonBlockSend(new byte[1], 0, 0, sf);
  10. bytesRecv = _socket.Receive(recvBytes, offset, size, sf);
  11. break;
  12. }
  13. catch (SocketException excp)
  14. {
  15. if (excp.ErrorCode != 10035) // WSAEWOULDBLOCK
  16. throw excp;
  17. }
  18. }
  19.  
  20. return bytesRecv;
  21. }
  22.  
  23. private int nonBlockSend(byte[] sendBytes, int offset, int size, SocketFlags sf)
  24. {
  25. int bytesSent = 0;
  26.  
  27. while (true)
  28. {
  29. try
  30. {
  31. _socket.Send(sendBytes, offset, size, sf);
  32. break;
  33. }
  34. catch (SocketException excp)
  35. {
  36. if (excp.ErrorCode != 10035) // WSAEWOULDBLOCK
  37. throw excp;
  38. }
  39. }
  40.  
  41. return bytesSent;
  42. }
  43.  
  44. int recv = sock.Receive(data);
  45. if (recv == 0)
  46. {
  47. // Remote client has disconnected.
  48. }
  49. else
  50. {
  51. // Remote client has sent data.
  52. }
  53.  
  54. while (numberOfBytesRead == 0)
  55. {
  56. try
  57. {
  58. IsConnected();
  59. _socket.ReceiveTimeout = 5000;
  60. numberOfBytesRead = _socket.Receive(myReadBuffer, 0, myReadBuffer.Length, SocketFlags.None);
  61.  
  62. }
  63. catch (Exception e)
  64. {
  65. if (e.GetType() == typeof (LostConnection))
  66. {
  67. Status = SocketStatus.offline;
  68. throw;
  69. }
  70. }
  71. }
  72.  
  73. public bool IsConnected(Socket s)
  74. {
  75. try
  76. {
  77. ASCIIEncoding encoder = new ASCIIEncoding();
  78. byte[] buffer = encoder.GetBytes("test");
  79. s.Send(buffer, 0, buffer.Length, SocketFlags.None);
  80. }
  81. catch (Exception)
  82. {
  83. throw new LostConnection();
  84. }
  85. return s.Connected;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement