blondedude092

Client.cs

Feb 1st, 2016
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.06 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Net.Sockets;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8.  
  9.  
  10. namespace Server
  11. {
  12.  
  13. public class Client
  14. {
  15.  
  16. public event DataRecieved DataRecievedEvent;
  17. public delegate void DataRecieved(Byte[] data);
  18. public event ClientExited ClientExitedEvent;
  19. public delegate void ClientExited(Client client);
  20.  
  21. private TcpClient client;
  22.  
  23. public Client(TcpClient client_)
  24. {
  25. client = client_;
  26. client.GetStream().BeginRead(new byte[] { 0 }, 0, 0, Read, null);
  27. }
  28.  
  29. private void Read(IAsyncResult ar)
  30. {
  31. try
  32. {
  33. NetworkStream NS = client.GetStream();
  34.  
  35. byte[] buffer = new byte[1024];
  36. int bytesRead = NS.Read(buffer, 0, buffer.Length);
  37. //reads the buffer as a string for a command...
  38. string message = Encoding.UTF8.GetString(buffer);
  39. Console.WriteLine("data from client: " + message);
  40.  
  41. String[] messageParts = message.Split(Shared.Separator);
  42.  
  43. switch (messageParts[0])
  44. {
  45. case Shared.Message:
  46. Console.WriteLine(messageParts[1]);
  47. break;
  48. case Shared.FileRequest:
  49. Console.WriteLine("FileRecieve Message");
  50.  
  51. break;
  52.  
  53. }
  54. //calls read again...
  55. client.GetStream().BeginRead(new Byte[] { 0 }, 0, 0, new AsyncCallback(Read), null);
  56. }
  57. catch (Exception)
  58. {
  59. //error occured tell the server that this client exited...
  60. ClientExitedEvent(this);
  61. }
  62. }
  63.  
  64. private void Write(Byte[] buffer)
  65. {
  66.  
  67. if (client.GetStream().CanWrite)
  68. {
  69.  
  70.  
  71. client.GetStream().Write(buffer, 0, buffer.Length);
  72. }
  73. else
  74. {
  75. Console.WriteLine("Sorry. You cannot write to this NetworkStream.");
  76. }
  77. }
  78.  
  79. public void SendMessage(string message)
  80. {
  81. //Shared.Message = "Message"
  82. //Shared.Separator = ((char)007);
  83. int length = message.Length + Shared.Message.Length + 1; //1 for the seperator character...
  84. byte[] buffer = new byte[length];
  85. byte[] msg = Encoding.UTF8.GetBytes(Shared.Message.ToCharArray());
  86. Array.Copy(msg, 0, buffer, 0, msg.Length);
  87. Array.Copy(new byte[] { Convert.ToByte(Shared.Separator) }, 0, buffer, Shared.Message.Length, 1);
  88. byte[] m = Encoding.UTF8.GetBytes(message);
  89. Array.Copy(m, 0, buffer, Shared.Message.Length + 1, m.Length );
  90. Console.WriteLine("Server sent message: " + message);
  91. Write(buffer);
  92. }
  93.  
  94. }
  95. }
Advertisement
Add Comment
Please, Sign In to add comment