Клиент сокета в 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".