Простой чат в консоли - проверьте корректность реализации - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, подумал может кому то будет полезно или интересно. Я создал простенький чат в консоли. Код сервера
Листинг программы
  1. using System.Text;
  2. using System.Net;
  3. using System.IO;
  4. using System.Net.Sockets;
  5. using System.Threading;
  6. namespace server
  7. {
  8. class Program
  9. {
  10.  
  11. static void Main(string[] args)
  12. {
  13. SF ClientName = new SF();
  14. string clientName = ClientName.GatName();
  15. if (clientName != "error")
  16. {
  17. Console.WriteLine("Client name - " + clientName);
  18. SF Chating = new SF();
  19. TcpListener listener = Chating.TcpList();
  20. Thread resive = new Thread(() => Chating.resivMSG(clientName, listener));
  21. resive.Start();
  22. Chating.writeMSG(listener);
  23. }
  24. Console.Read();
  25. }
  26. }
  27. }
Функции здесь
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Net;
  6. using System.IO;
  7. using System.Net.Sockets;
  8. namespace server
  9. {
  10. class SF
  11. {
  12. public string GatName()
  13. {
  14. Console.WriteLine("Whait for connect");
  15. TcpListener listener = new TcpListener(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 12000));
  16. listener.Start();
  17. try
  18. {
  19. // це наш клієнт
  20. TcpClient client = listener.AcceptTcpClient();
  21. // Прийом повідомлення
  22. StreamReader sr = new StreamReader(client.GetStream());
  23. string clientMSG = sr.ReadLine();
  24. Console.WriteLine("Client test msg : " + clientMSG);
  25. // Передача повідомлення
  26. StreamWriter sw = new StreamWriter(client.GetStream());
  27. sw.AutoFlush = true;
  28. Console.WriteLine("Enter you name");
  29. sw.WriteLine("Enter you name");
  30. // прийом імені
  31. string clientName = sr.ReadLine();
  32. Destroy(sr, sw, client, listener);
  33. return clientName;
  34. }
  35. catch (Exception er)
  36. {
  37. Console.WriteLine(er.ToString());
  38. return "error";
  39. }
  40. }
  41. public void Destroy(StreamReader sr, StreamWriter sw, TcpClient client, TcpListener listener)
  42. {
  43. sr.Close();
  44. sw.Close();
  45. client.Close();
  46. listener.Stop();
  47. }
  48. public void Destroy(StreamWriter sw, TcpClient client, TcpListener listener)
  49. {
  50. sw.Close();
  51. client.Close();
  52. listener.Stop();
  53. }
  54. public void Destroy(StreamReader sr, TcpClient client, TcpListener listener)
  55. {
  56. sr.Close();
  57. client.Close();
  58. listener.Stop();
  59. }
  60.  
  61. public void writeMSG(TcpListener listener)
  62. {
  63. try
  64. {
  65. // це наш клієнт
  66. TcpClient client = listener.AcceptTcpClient();
  67. // Передача повідомлення
  68. StreamWriter sw = new StreamWriter(client.GetStream());
  69. sw.AutoFlush = true;
  70. Console.WriteLine("spicing");
  71. while (true)
  72. {
  73. Console.WriteLine("You write");
  74. string servMsg = Console.ReadLine();
  75. Console.WriteLine("--------------------");
  76. if (servMsg == "TheEnd") break;
  77. sw.WriteLine(servMsg);
  78. }
  79. Destroy(sw, client, listener);
  80. }
  81. catch (Exception er)
  82. {
  83. Console.WriteLine(er.ToString());
  84. }
  85. }
  86. public void resivMSG(string clientName, TcpListener listener)
  87. {
  88. try
  89. {
  90. // це наш клієнт
  91. TcpClient client = listener.AcceptTcpClient();
  92. // Прийом повідомлення
  93. StreamReader sr = new StreamReader(client.GetStream());
  94. // Передача повідомлення
  95. while (true)
  96. {
  97. string clientMSG = sr.ReadLine();
  98. if (clientName == "TheEnd") break;
  99. Console.WriteLine("====================");
  100. Console.WriteLine(clientName + " write : " + clientMSG);
  101. Console.WriteLine("====================");
  102. }
  103. Destroy(sr, client, listener);
  104. }
  105. catch (Exception er)
  106. {
  107. Console.WriteLine(er.ToString());
  108. }
  109. }
  110.  
  111. public TcpListener TcpList()
  112. {
  113. TcpListener listener = new TcpListener(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 12000));
  114. listener.Start();
  115. return listener;
  116. }
  117. }
  118. }
Клиент
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Net;
  6. using System.Net.Sockets;
  7. using System.IO;
  8. using System.Threading;
  9. namespace client
  10. {
  11. class Program
  12. {
  13. static void Main(string[] args)
  14. {
  15. CF ClientName = new CF();
  16. if (ClientName.SendName() == 1)
  17. {
  18. Console.WriteLine("Go spicking!");
  19. CF Chating = new CF();
  20. Thread resive = new Thread(Chating.resivMSG);
  21. resive.Start();
  22. Chating.writePSG();
  23. Console.Read();
  24. }
  25. }
  26. }
  27. }
Функции
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Net;
  6. using System.Net.Sockets;
  7. using System.IO;
  8. using System.Threading;
  9. namespace client
  10. {
  11. class CF
  12. {
  13. public int SendName()
  14. {
  15. try
  16. {
  17. TcpClient client = new TcpClient();
  18. client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 12000));
  19. // відправка повідомлення
  20. StreamWriter sw = new StreamWriter(client.GetStream());
  21. sw.AutoFlush = true;
  22. Console.WriteLine("write test mesage");
  23. string clientMsg = Console.ReadLine();
  24. sw.WriteLine(clientMsg);
  25. // прийом повідомлення
  26. StreamReader sr = new StreamReader(client.GetStream());
  27. string serverMSG = sr.ReadLine();
  28. Console.WriteLine(" From Server : " + serverMSG);
  29. // відправка імені
  30. string myName = Console.ReadLine();
  31. sw.WriteLine(myName);
  32. Destroy(sr, sw, client);
  33. return 1;
  34. }
  35. catch (Exception er)
  36. {
  37. Console.WriteLine(er.ToString());
  38. return 0;
  39. }
  40. }
  41.  
  42. public void Destroy(StreamReader sr, StreamWriter sw, TcpClient client)
  43. {
  44. sr.Close();
  45. sw.Close();
  46. client.Close();
  47. }
  48.  
  49. public void Destroy(StreamWriter sw, TcpClient client/*, TcpListener listener*/)
  50. {
  51. sw.Close();
  52. client.Close();
  53. }
  54. public void Destroy(StreamReader sr, TcpClient client/*, TcpListener listener*/)
  55. {
  56. sr.Close();
  57. client.Close();
  58. }
  59. public void writePSG()
  60. {
  61. try
  62. {
  63. TcpClient client = new TcpClient();
  64. client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 12000));
  65. // відправка повідомлення
  66. StreamWriter sw = new StreamWriter(client.GetStream());
  67. sw.AutoFlush = true;
  68. while (true)
  69. {
  70. Console.WriteLine("You mesage");
  71. string clientMSG = Console.ReadLine();
  72. Console.WriteLine("--------------------");
  73. if (clientMSG == "TheEnd") break;
  74. sw.WriteLine(clientMSG);
  75. }
  76. Destroy(sw, client);
  77. }
  78. catch (Exception er)
  79. {
  80. Console.WriteLine(er.ToString());
  81. }
  82. }
  83.  
  84. public void resivMSG()
  85. {
  86. try
  87. {
  88. TcpClient client = new TcpClient();
  89. client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 12000));
  90. // прийом повідомлення
  91. StreamReader sr = new StreamReader(client.GetStream());
  92. while (true)
  93. {
  94. string serverMSG = sr.ReadLine();
  95. if (serverMSG == "TheEnd") break;
  96. Console.WriteLine("====================");
  97. Console.WriteLine("Server mesage: " + serverMSG);
  98. Console.WriteLine("====================");
  99. }
  100. Destroy(sr, client);
  101. }
  102. catch (Exception er)
  103. {
  104. Console.WriteLine(er.ToString());
  105. }
  106. }
  107. }
  108. }
Как видете клиент и серевер почти идентичны. Обращиюсь к "знатокам", мне интересны ващи замечания и предложения покоду. Может кто то имеет предложения по усоверщенствоватию програмы. Просто я студент и мне хочется реализовать интересные задачи. Кстати этот вариан програмы работаэт локально. Если нужно в сети то на серверной часть там где "127.0.0.1" прописать адрес клиента, а на клиентской - наоборот. Спасибо за внимание.

Решение задачи: «Простой чат в консоли - проверьте корректность реализации»

textual
Листинг программы
  1. ChatUser chatUser = new ChatUser();
  2.             ChatService chatService = new ChatService();
  3.  
  4.             chatService.SendMessage(chatUser.Say());
  5.             chatUser.Read(chatService.ReceiveMessage());
  6.  
  7.             chatService.SendMessage(chatUser.UserName);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы