Простой чат в консоли - проверьте корректность реализации - C#
Формулировка задачи:
Здравствуйте, подумал может кому то будет полезно или интересно.
Я создал простенький чат в консоли.
Код сервера
Функции здесь
Клиент
Функции
Как видете клиент и серевер почти идентичны.
Обращиюсь к "знатокам", мне интересны ващи замечания и предложения покоду.
Может кто то имеет предложения по усоверщенствоватию програмы. Просто я студент и мне хочется реализовать интересные задачи.
Кстати этот вариан програмы работаэт локально. Если нужно в сети то на серверной часть там где "127.0.0.1" прописать адрес клиента, а на клиентской - наоборот.
Спасибо за внимание.
Листинг программы
- using System.Text;
- using System.Net;
- using System.IO;
- using System.Net.Sockets;
- using System.Threading;
- namespace server
- {
- class Program
- {
- static void Main(string[] args)
- {
- SF ClientName = new SF();
- string clientName = ClientName.GatName();
- if (clientName != "error")
- {
- Console.WriteLine("Client name - " + clientName);
- SF Chating = new SF();
- TcpListener listener = Chating.TcpList();
- Thread resive = new Thread(() => Chating.resivMSG(clientName, listener));
- resive.Start();
- Chating.writeMSG(listener);
- }
- Console.Read();
- }
- }
- }
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Net;
- using System.IO;
- using System.Net.Sockets;
- namespace server
- {
- class SF
- {
- public string GatName()
- {
- Console.WriteLine("Whait for connect");
- TcpListener listener = new TcpListener(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 12000));
- listener.Start();
- try
- {
- // це наш клієнт
- TcpClient client = listener.AcceptTcpClient();
- // Прийом повідомлення
- StreamReader sr = new StreamReader(client.GetStream());
- string clientMSG = sr.ReadLine();
- Console.WriteLine("Client test msg : " + clientMSG);
- // Передача повідомлення
- StreamWriter sw = new StreamWriter(client.GetStream());
- sw.AutoFlush = true;
- Console.WriteLine("Enter you name");
- sw.WriteLine("Enter you name");
- // прийом імені
- string clientName = sr.ReadLine();
- Destroy(sr, sw, client, listener);
- return clientName;
- }
- catch (Exception er)
- {
- Console.WriteLine(er.ToString());
- return "error";
- }
- }
- public void Destroy(StreamReader sr, StreamWriter sw, TcpClient client, TcpListener listener)
- {
- sr.Close();
- sw.Close();
- client.Close();
- listener.Stop();
- }
- public void Destroy(StreamWriter sw, TcpClient client, TcpListener listener)
- {
- sw.Close();
- client.Close();
- listener.Stop();
- }
- public void Destroy(StreamReader sr, TcpClient client, TcpListener listener)
- {
- sr.Close();
- client.Close();
- listener.Stop();
- }
- public void writeMSG(TcpListener listener)
- {
- try
- {
- // це наш клієнт
- TcpClient client = listener.AcceptTcpClient();
- // Передача повідомлення
- StreamWriter sw = new StreamWriter(client.GetStream());
- sw.AutoFlush = true;
- Console.WriteLine("spicing");
- while (true)
- {
- Console.WriteLine("You write");
- string servMsg = Console.ReadLine();
- Console.WriteLine("--------------------");
- if (servMsg == "TheEnd") break;
- sw.WriteLine(servMsg);
- }
- Destroy(sw, client, listener);
- }
- catch (Exception er)
- {
- Console.WriteLine(er.ToString());
- }
- }
- public void resivMSG(string clientName, TcpListener listener)
- {
- try
- {
- // це наш клієнт
- TcpClient client = listener.AcceptTcpClient();
- // Прийом повідомлення
- StreamReader sr = new StreamReader(client.GetStream());
- // Передача повідомлення
- while (true)
- {
- string clientMSG = sr.ReadLine();
- if (clientName == "TheEnd") break;
- Console.WriteLine("====================");
- Console.WriteLine(clientName + " write : " + clientMSG);
- Console.WriteLine("====================");
- }
- Destroy(sr, client, listener);
- }
- catch (Exception er)
- {
- Console.WriteLine(er.ToString());
- }
- }
- public TcpListener TcpList()
- {
- TcpListener listener = new TcpListener(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 12000));
- listener.Start();
- return listener;
- }
- }
- }
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Net;
- using System.Net.Sockets;
- using System.IO;
- using System.Threading;
- namespace client
- {
- class Program
- {
- static void Main(string[] args)
- {
- CF ClientName = new CF();
- if (ClientName.SendName() == 1)
- {
- Console.WriteLine("Go spicking!");
- CF Chating = new CF();
- Thread resive = new Thread(Chating.resivMSG);
- resive.Start();
- Chating.writePSG();
- Console.Read();
- }
- }
- }
- }
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Net;
- using System.Net.Sockets;
- using System.IO;
- using System.Threading;
- namespace client
- {
- class CF
- {
- public int SendName()
- {
- try
- {
- TcpClient client = new TcpClient();
- client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 12000));
- // відправка повідомлення
- StreamWriter sw = new StreamWriter(client.GetStream());
- sw.AutoFlush = true;
- Console.WriteLine("write test mesage");
- string clientMsg = Console.ReadLine();
- sw.WriteLine(clientMsg);
- // прийом повідомлення
- StreamReader sr = new StreamReader(client.GetStream());
- string serverMSG = sr.ReadLine();
- Console.WriteLine(" From Server : " + serverMSG);
- // відправка імені
- string myName = Console.ReadLine();
- sw.WriteLine(myName);
- Destroy(sr, sw, client);
- return 1;
- }
- catch (Exception er)
- {
- Console.WriteLine(er.ToString());
- return 0;
- }
- }
- public void Destroy(StreamReader sr, StreamWriter sw, TcpClient client)
- {
- sr.Close();
- sw.Close();
- client.Close();
- }
- public void Destroy(StreamWriter sw, TcpClient client/*, TcpListener listener*/)
- {
- sw.Close();
- client.Close();
- }
- public void Destroy(StreamReader sr, TcpClient client/*, TcpListener listener*/)
- {
- sr.Close();
- client.Close();
- }
- public void writePSG()
- {
- try
- {
- TcpClient client = new TcpClient();
- client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 12000));
- // відправка повідомлення
- StreamWriter sw = new StreamWriter(client.GetStream());
- sw.AutoFlush = true;
- while (true)
- {
- Console.WriteLine("You mesage");
- string clientMSG = Console.ReadLine();
- Console.WriteLine("--------------------");
- if (clientMSG == "TheEnd") break;
- sw.WriteLine(clientMSG);
- }
- Destroy(sw, client);
- }
- catch (Exception er)
- {
- Console.WriteLine(er.ToString());
- }
- }
- public void resivMSG()
- {
- try
- {
- TcpClient client = new TcpClient();
- client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 12000));
- // прийом повідомлення
- StreamReader sr = new StreamReader(client.GetStream());
- while (true)
- {
- string serverMSG = sr.ReadLine();
- if (serverMSG == "TheEnd") break;
- Console.WriteLine("====================");
- Console.WriteLine("Server mesage: " + serverMSG);
- Console.WriteLine("====================");
- }
- Destroy(sr, client);
- }
- catch (Exception er)
- {
- Console.WriteLine(er.ToString());
- }
- }
- }
- }
Решение задачи: «Простой чат в консоли - проверьте корректность реализации»
textual
Листинг программы
- ChatUser chatUser = new ChatUser();
- ChatService chatService = new ChatService();
- chatService.SendMessage(chatUser.Say());
- chatUser.Read(chatService.ReceiveMessage());
- chatService.SendMessage(chatUser.UserName);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д