SocketEx.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. using Island.StandardLib.Storage;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Diagnostics;
  5. using System.Linq;
  6. using System.Net.Sockets;
  7. using System.Threading;
  8. namespace Island.StandardLib
  9. {
  10. //public class SocketEx : Socket
  11. //{
  12. // MultiSizeData SendPool, RecvPool;
  13. // Thread SendLoopThread, RecvLoopThread;
  14. // public SocketEx(SocketInformation info) : base(info)
  15. // {
  16. // SendPool = new MultiSizeData();
  17. // RecvPool = new MultiSizeData();
  18. // }
  19. // public SocketEx(AddressFamily address, SocketType stype, ProtocolType ptype) : base(address, stype, ptype)
  20. // {
  21. // SendPool = new MultiSizeData();
  22. // RecvPool = new MultiSizeData();
  23. // }
  24. // public void StartLoop()
  25. // {
  26. // SendLoopThread = new Thread(SendLoop);
  27. // SendLoopThread.IsBackground = true;
  28. // SendLoopThread.Start();
  29. // RecvLoopThread = new Thread(RecvLoop);
  30. // RecvLoopThread.IsBackground = true;
  31. // RecvLoopThread.Start();
  32. // }
  33. // void SendLoop()
  34. // {
  35. // byte[] fbuff = new byte[128];
  36. // while (true)
  37. // {
  38. // try
  39. // {
  40. // if (SendPool.Size > 127)
  41. // {
  42. // SendPool.Receive(fbuff, 0, 128);
  43. // SendPool.FreeBegin();
  44. // Send(fbuff);
  45. // }
  46. // SendPool.FreeBegin();
  47. // }
  48. // catch { break; }
  49. // Thread.Sleep(2);
  50. // }
  51. // }
  52. // void RecvLoop()
  53. // {
  54. // byte[] fbuff = new byte[128];
  55. // while (true)
  56. // {
  57. // try
  58. // {
  59. // Receive(fbuff, fbuff.Length, SocketFlags.None);
  60. // SendPool.Send(fbuff);
  61. // }
  62. // catch { break; }
  63. // Thread.Sleep(2);
  64. // }
  65. // }
  66. // public void ReceiveEx(byte[] buffer, int size)
  67. // {
  68. // RecvPool.Receive(buffer, 0, size);
  69. // RecvPool.FreeBegin();
  70. // }
  71. // public void SendEx(byte[] buffer)
  72. // {
  73. // SendPool.Send(buffer);
  74. // }
  75. // protected override void Dispose(bool disposing)
  76. // {
  77. // base.Dispose(disposing);
  78. // SendLoopThread.Stop();
  79. // RecvLoopThread.Stop();
  80. // }
  81. //}
  82. //public class SocketExS
  83. //{
  84. // public const int NativePoolSize = 4;
  85. // MultiSizeData SendPool, RecvPool;
  86. // Thread SendLoopThread, RecvLoopThread;
  87. // public Socket Socket;
  88. // public SocketExS(Socket socket)
  89. // {
  90. // SendPool = new MultiSizeData();
  91. // RecvPool = new MultiSizeData();
  92. // Socket = socket;
  93. // StartLoop();
  94. // }
  95. // public void StartLoop()
  96. // {
  97. // SendLoopThread = new Thread(SendLoop);
  98. // SendLoopThread.IsBackground = true;
  99. // SendLoopThread.Start();
  100. // RecvLoopThread = new Thread(RecvLoop);
  101. // RecvLoopThread.IsBackground = true;
  102. // RecvLoopThread.Start();
  103. // }
  104. // void SendLoop()
  105. // {
  106. // byte[] fbuff = new byte[NativePoolSize];
  107. // while (true)
  108. // {
  109. // try
  110. // {
  111. // if (SendPool.Size >= NativePoolSize)
  112. // {
  113. // SendPool.Read(fbuff, 0, NativePoolSize);
  114. // Socket.Send(fbuff);
  115. // }
  116. // }
  117. // catch (Exception e)
  118. // {
  119. // Debug.WriteLine(e);
  120. // break;
  121. // }
  122. // Thread.Sleep(2);
  123. // }
  124. // }
  125. // void RecvLoop()
  126. // {
  127. // byte[] fbuff = new byte[NativePoolSize];
  128. // while (true)
  129. // {
  130. // try
  131. // {
  132. // Socket.Receive(fbuff, fbuff.Length, SocketFlags.None);
  133. // RecvPool.Write(fbuff);
  134. // }
  135. // catch { break; }
  136. // Thread.Sleep(2);
  137. // }
  138. // }
  139. // public void ReceiveEx(byte[] buffer, int size)
  140. // {
  141. // RecvPool.Read(buffer, 0, size);
  142. // RecvPool.FreeUnused();
  143. // }
  144. // public void SendEx(byte[] buffer)
  145. // {
  146. // SendPool.Write(buffer);
  147. // }
  148. // public void Close()
  149. // {
  150. // Socket.Close();
  151. // }
  152. // public void Dispose()
  153. // {
  154. // SendLoopThread.Stop();
  155. // RecvLoopThread.Stop();
  156. // Socket.Dispose();
  157. // }
  158. //}
  159. }