Advertisement
Guest User

Untitled

a guest
Jul 25th, 2016
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.00 KB | None | 0 0
  1.  
  2. var net = require('net');
  3.  
  4. // creates the server
  5. var server = net.createServer();
  6.  
  7. //emitted when server closes ...not emitted until all connections closes.
  8. server.on('close',function(){
  9. console.log('Server closed !');
  10. });
  11.  
  12. // emitted when new client connects
  13. server.on('connection',function(socket){
  14.  
  15. //this property shows the number of characters currently buffered to be written. (Number of characters is approximately equal to the number of bytes to be written, but the buffer may contain strings, and the strings are lazily encoded, so the exact number of bytes is not known.)
  16. //Users who experience large or growing bufferSize should attempt to "throttle" the data flows in their program with pause() and resume().
  17.  
  18. console.log('Buffer size : ' + socket.bufferSize);
  19.  
  20. console.log('---------server details -----------------');
  21.  
  22. var address = server.address();
  23. var port = address.port;
  24. var family = address.family;
  25. var ipaddr = address.address;
  26. console.log('Server is listening at port' + port);
  27. console.log('Server ip :' + ipaddr);
  28. console.log('Server is IP4/IP6 : ' + family);
  29.  
  30. var lport = socket.localPort;
  31. var laddr = socket.localAddress;
  32. console.log('Server is listening at LOCAL port' + lport);
  33. console.log('Server LOCAL ip :' + laddr);
  34.  
  35. console.log('------------remote client info --------------');
  36.  
  37. var rport = socket.remotePort;
  38. var raddr = socket.remoteAddress;
  39. var rfamily = socket.remoteFamily;
  40.  
  41. console.log('REMOTE Socket is listening at port' + rport);
  42. console.log('REMOTE Socket ip :' + raddr);
  43. console.log('REMOTE Socket is IP4/IP6 : ' + rfamily);
  44.  
  45. console.log('--------------------------------------------')
  46. //var no_of_connections = server.getConnections(); // sychronous version
  47. server.getConnections(function(error,count){
  48. console.log('Number of concurrent connections to the server : ' + count);
  49. });
  50.  
  51. socket.setEncoding('utf8');
  52.  
  53. socket.setTimeout(800000,function(){
  54. // called after timeout -> same as socket.on('timeout')
  55. // it just tells that soket timed out => its ur job to end or destroy the socket.
  56. // socket.end() vs socket.destroy() => end allows us to send final data and allows some i/o activity to finish before destroying the socket
  57. // whereas destroy kills the socket immediately irrespective of whether any i/o operation is goin on or not...force destry takes place
  58. console.log('Socket timed out');
  59. });
  60.  
  61.  
  62. socket.on('data',function(data){
  63. var bread = socket.bytesRead;
  64. var bwrite = socket.bytesWritten;
  65. console.log('Bytes read : ' + bread);
  66. console.log('Bytes written : ' + bwrite);
  67. console.log('Data sent to server : ' + data);
  68.  
  69. //echo data
  70. var is_kernel_buffer_full = socket.write('Data ::' + data);
  71. if(is_kernel_buffer_full){
  72. console.log('Data was flushed successfully from kernel buffer i.e written successfully!');
  73. }else{
  74. socket.pause();
  75. }
  76.  
  77. });
  78.  
  79. socket.on('drain',function(){
  80. console.log('write buffer is empty now .. u can resume the writable stream');
  81. socket.resume();
  82. });
  83.  
  84. socket.on('error',function(error){
  85. console.log('Error : ' + error);
  86. });
  87.  
  88. socket.on('timeout',function(){
  89. console.log('Socket timed out !');
  90. socket.end('Timed out!');
  91. // can call socket.destroy() here too.
  92. });
  93.  
  94. socket.on('end',function(data){
  95. console.log('Socket ended from other end!');
  96. console.log('End data : ' + data);
  97. });
  98.  
  99. socket.on('close',function(error){
  100. var bread = socket.bytesRead;
  101. var bwrite = socket.bytesWritten;
  102. console.log('Bytes read : ' + bread);
  103. console.log('Bytes written : ' + bwrite);
  104. console.log('Socket closed!');
  105. if(error){
  106. console.log('Socket was closed coz of transmission error');
  107. }
  108. });
  109.  
  110. setTimeout(function(){
  111. var isdestroyed = socket.destroyed;
  112. console.log('Socket destroyed:' + isdestroyed);
  113. socket.destroy();
  114. },1200000);
  115.  
  116. });
  117.  
  118. // emits when any error occurs -> calls closed event immediately after this.
  119. server.on('error',function(error){
  120. console.log('Error: ' + error);
  121. });
  122.  
  123. //emits when server is bound with server.listen
  124. server.on('listening',function(){
  125. console.log('Server is listening!');
  126. });
  127.  
  128. server.maxConnections = 10;
  129.  
  130. //static port allocation
  131. server.listen(2222);
  132.  
  133.  
  134. // for dyanmic port allocation
  135. server.listen(function(){
  136. var address = server.address();
  137. var port = address.port;
  138. var family = address.family;
  139. var ipaddr = address.address;
  140. console.log('Server is listening at port' + port);
  141. console.log('Server ip :' + ipaddr);
  142. console.log('Server is IP4/IP6 : ' + family);
  143. });
  144.  
  145.  
  146.  
  147. var islistening = server.listening;
  148.  
  149. if(islistening){
  150. console.log('Server is listening');
  151. }else{
  152. console.log('Server is not listening');
  153. }
  154.  
  155. setTimeout(function(){
  156. server.close();
  157. },5000000);
  158.  
  159.  
  160. //---------------------client----------------------
  161.  
  162. // creating a custom socket client and connecting it....
  163. var client = new net.Socket();
  164. client.connect({
  165. port:2222
  166. });
  167.  
  168. client.on('connect',function(){
  169. console.log('Client: connection established with server');
  170.  
  171. console.log('---------client details -----------------');
  172. var address = client.address();
  173. var port = address.port;
  174. var family = address.family;
  175. var ipaddr = address.address;
  176. console.log('Client is listening at port' + port);
  177. console.log('Client ip :' + ipaddr);
  178. console.log('Client is IP4/IP6 : ' + family);
  179.  
  180.  
  181. // writing data to server
  182. client.write('hello from client');
  183.  
  184. });
  185.  
  186. client.setEncoding('utf8');
  187.  
  188. client.on('data',function(data){
  189. console.log('Data from server:' + data);
  190. });
  191.  
  192. setTimeout(function(){
  193. client.end('Bye bye server');
  194. },5000);
  195.  
  196. //NOTE:--> all the events of the socket are applicable here..in client...
  197.  
  198.  
  199. // -----------------creating client using net.connect instead of custom socket-------
  200.  
  201. // server creation using net.connect --->
  202. // u can also => write the below code in seperate js file
  203. // open new node instance => and run it...
  204.  
  205.  
  206. const clients = net.connect({port: 2222}, () => {
  207. // 'connect' listener
  208. console.log('connected to server!');
  209. clients.write('world!\r\n');
  210. });
  211. clients.on('data', (data) => {
  212. console.log(data.toString());
  213. clients.end();
  214. });
  215. clients.on('end', () => {
  216. console.log('disconnected from server');
  217. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement