|
Mijozdan ma'lumotlarni qabul qilish
|
bet | 8/11 | Sana | 21.05.2024 | Hajmi | 0,51 Mb. | | #247129 |
Bog'liq Nabijonov Asliddining kurs ishi Mijozdan ma'lumotlarni qabul qilish
Endi mijoz va serverlar o'rtasidagi bir yo'nalishli aloqaning yana bir turini ko'rib chiqaylik, aksincha, mijoz ma'lumotlarni yuboradi va server oddiygina qabul qiladi. Shunday qilib, server uchun quyidagi kodni aniqlaymiz:
using System.Net;
using System.Net.Sockets;
using System.Text;
var tcpListener = new TcpListener(IPAddress.Any, 8888);
try
{
tcpListener.Start(); // запускаем сервер
Console.WriteLine("Сервер запущен. Ожидание подключений... ");
while (true)
{
// получаем подключение в виде TcpClient
using var tcpClient = await tcpListener.AcceptTcpClientAsync();
// получаем объект NetworkStream для взаимодействия с клиентом
var stream = tcpClient.GetStream();
// определяем буфер для получения данных
byte[] responseData = new byte[1024];
int bytes = 0; // количество считанных байтов
var response = new StringBuilder(); // для склеивания данных в строку
// считываем данные
do
{
bytes = await stream.ReadAsync(responseData);
response.Append(Encoding.UTF8.GetString(responseData, 0, bytes));
}
while(bytes > 0);
// выводим отправленные клиентом данные
Console.WriteLine(response);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
tcpListener.Stop(); // останавливаем сервер
}
Bu erda biz tcpClient-dan NetworkStream oqimini olamiz va mijozdan ma'lumotlarni o'qish uchun foydalanamiz. Xususan, usul yordamida stream.ReadAsync() biz oqimdan ma'lumotlarni bayt massiviga o'qiymiz. Bunday holda, biz ma'lumotlar satr bo'ladi deb taxmin qilamiz. Va baytlardan satrni olgandan so'ng, biz uni konsolga chiqaramiz.
Mijozda ma'lum bir qatorni yuborish uchun eng oddiy kodni aniqlaymiz:
using System.Net.Sockets;
using System.Text;
using TcpClient tcpClient = new TcpClient();
await tcpClient.ConnectAsync("127.0.0.1", 8888);
// сообщение для отправки
var message = "Hello METANIT.COM";
// считыванием строку в массив байт
byte[] requestData = Encoding.UTF8.GetBytes(message);
// получаем NetworkStream для взаимодействия с сервером
var stream = tcpClient.GetStream();
// отправляем данные
await stream.WriteAsync(requestData);
Console.WriteLine("Сообщение отправлено");
Bunday holda, stream.WriteAsync()biz ma'lumotlarni serverga yuboramiz. Ma'lumotlar oddiy qatordir.
S erver va mijozni ishga tushiramiz. Muvaffaqiyatli ulanish va ma'lumotlarni yuborishdan so'ng, mijoz konsolida tegishli xabarni ko'ramiz:
V a server mijozdan xabar oladi va uni konsolda ko'rsatadi:
|
| |