Guest User

Untitled

a guest
Jan 21st, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.36 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Net;
  5. using System.Net.Sockets;
  6. using System.Text;
  7. using System.Threading;
  8.  
  9. namespace MyFirstWebServer
  10. {
  11. public class Server
  12. {
  13. private TcpListener tcpListener;
  14. private Thread listenThread;
  15.  
  16. public Server()
  17. {
  18. this.tcpListener = new TcpListener(IPAddress.Any, 3000);
  19. this.listenThread = new Thread(new ThreadStart(ListenForClients));
  20. this.listenThread.Start();
  21. }
  22.  
  23. public void ListenForClients()
  24. {
  25. this.tcpListener.Start();
  26.  
  27. while (true)
  28. {
  29. //blocks until a client has connected to the server
  30. TcpClient client = this.tcpListener.AcceptTcpClient();
  31.  
  32. //create a thread to handle communication
  33. //with connected client
  34. Thread clientThread = new Thread(new ParameterizedThreadStart(HandleClientComm));
  35. clientThread.Start(client);
  36. }
  37. }
  38.  
  39. private void HandleClientComm(object client)
  40. {
  41. TcpClient tcpClient = (TcpClient)client;
  42. NetworkStream clientStream = tcpClient.GetStream();
  43.  
  44. ASCIIEncoding encoder = new ASCIIEncoding();
  45.  
  46. byte[] message = new byte[tcpClient.ReceiveBufferSize];
  47. int bytesRead;
  48. string messageString = string.Empty;
  49.  
  50. while (true)
  51. {
  52. bytesRead = 0;
  53.  
  54. try
  55. {
  56. //blocks until a client sends a message
  57. bytesRead = clientStream.Read(message, 0, message.Length);
  58. //if(bytesRead > 0)
  59. // break;
  60. }
  61. catch
  62. {
  63. //a socket error has occured
  64. break;
  65. }
  66.  
  67. if (bytesRead == 0)
  68. {
  69. //the client has disconnected from the server
  70. break;
  71. }
  72.  
  73. }
  74.  
  75. //Console.WriteLine("Received from Client: " + encoder.GetString(message));
  76.  
  77. byte[] buffer = encoder.GetBytes("HTTP 1.1 200 OK");
  78. clientStream.Write(buffer, 0, buffer.Length);
  79. clientStream.Flush();
  80.  
  81. tcpClient.Close();
  82. }
  83. }
  84. }
Add Comment
Please, Sign In to add comment