-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathClient.cs
59 lines (50 loc) · 2.45 KB
/
Client.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
using System;
using System.Text;
using System.Net.Sockets;
namespace ServerClientApp
{
class Client
{
internal string ClientName { get; private set; } // Имя клиента
internal bool IsConnected { get; private set; } = false; // Соединён ли клиент с хостом
private NetworkStream networkStream; // Поток клиента для обмена данными с хостом
internal Client(string clientName)
{
ClientName = clientName;
}
// Метод, который отвечает за соединение клиента с хостом
internal void Connect(string hostIP, int hostPort)
{
try
{
TcpClient client = new TcpClient(hostIP, hostPort);
IsConnected = true;
byte[] data = Encoding.ASCII.GetBytes($"(i) Client: {ClientName} - connected."); // Конвертация текстового сообщения в байты
networkStream = client.GetStream(); // Получение потока клиента
networkStream.Write(data, 0, data.Length); // Отправка сообщения хосту
Console.WriteLine("(i) Host connection established.");
}
catch (ArgumentNullException ex)
{
Console.WriteLine($"ArgumentNullException: {ex}");
}
catch (SocketException ex)
{
Console.WriteLine($"SocketException: {ex}");
}
}
// Метод для отправки текстовых сообщений от клиента к хосту
internal void SendMessage(string message)
{
// Если клиент присоединён к какому-то хосту:
if (IsConnected)
{
byte[] data = Encoding.ASCII.GetBytes(message); // Преобразование текстового сообщения в байты
networkStream.Write(data, 0, data.Length); // Отправка сообщения серверу
Console.WriteLine($"> Sent: {message}"); // Вывод отправленного сообщения на консоль клиента (пользователя)
}
else
Console.WriteLine("(!) Message not sent. No connection to host.");
}
}
}