Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csSpSoCln 482 of 509 menu
◀ ▶

Клиент сокета в C#

Клиентская сторона открывает соединение после успешного ConnectAsync к уже слушающему серверу.

Адрес и порт задают в ConnectAsync с тем же хостом и портом, что у сервера. Текст передают вызовом WriteAsync: строку заранее переводят в байты UTF-8. Перевод строки \n включают в отправляемый текст, если стороны договорились резать фразы по строкам. После работы соединение закрывают через using.

Подключимся к 127.0.0.1 и порту 18080, отправим строку "client line" и напечатаем её на стороне сервера:

using System.Net; using System.Net.Sockets; using System.Text; Task server = Task.Run(async () => { TcpListener listener = new(IPAddress.Loopback, 18080); listener.Start(); using TcpClient peer = await listener.AcceptTcpClientAsync(); using NetworkStream stream = peer.GetStream(); byte[] buf = new byte[256]; int n = await stream.ReadAsync(buf); Console.WriteLine(Encoding.UTF8.GetString(buf, 0, n).TrimEnd()); listener.Stop(); }); await Task.Delay(30); using TcpClient client = new(); await client.ConnectAsync("127.0.0.1", 18080); using NetworkStream stream = client.GetStream(); await stream.WriteAsync(Encoding.UTF8.GetBytes("client line\n")); await server;

Во втором примере клиент пишет другую строку, а сервер печатает прочитанный текст с префиксом "server:":

using System.Net; using System.Net.Sockets; using System.Text; Task server = Task.Run(async () => { TcpListener listener = new(IPAddress.Loopback, 18080); listener.Start(); using TcpClient peer = await listener.AcceptTcpClientAsync(); using NetworkStream stream = peer.GetStream(); byte[] buf = new byte[256]; int n = await stream.ReadAsync(buf); Console.WriteLine("server:" + Encoding.UTF8.GetString(buf, 0, n).TrimEnd()); listener.Stop(); }); await Task.Delay(30); using TcpClient client = new(); await client.ConnectAsync("127.0.0.1", 18080); using NetworkStream stream = client.GetStream(); await stream.WriteAsync(Encoding.UTF8.GetBytes("note from client\n")); await server;

Отправьте строку "ping\n" на 127.0.0.1 и порт 18080. В консоли сервера напечатайте ее с префиксом "got: ".

Отправьте строку "alpha\n" на 127.0.0.1 и выведите в консоли сервера текст "alpha".

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить