Server端
using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Pipes;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Server
{
class Program
{
static void Main(string[] args)
{
Task serverTask = Task.Run(() =>
{
using (NamedPipeServerStream serverPipe = new NamedPipeServerStream("mypipe", PipeDirection.InOut))
{
Console.WriteLine("Server: Waiting for connection...");
serverPipe.WaitForConnection();
Console.WriteLine("Server: Client connected.");
using (var reader = new StreamReader(serverPipe))
{
while (true)
{
string message = reader.ReadLine();
if (message == "exit")
break;
Console.WriteLine($"Server received: {message}");
}
}
}
});
Task.WaitAll(serverTask);
}
}
}
Client端
using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Pipes;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Client
{
class Program
{
static void Main(string[] args)
{
Task clientTask = Task.Run(() =>
{
using (NamedPipeClientStream clientPipe = new NamedPipeClientStream(".", "mypipe", PipeDirection.InOut))
{
Console.WriteLine("Client: Connecting to server...");
clientPipe.Connect();
Console.WriteLine("Client: Connected.");
using (var writer = new StreamWriter(clientPipe))
{
writer.AutoFlush = true;
for (int i = 0; i < 5; i++)
{
string message = $"Message {i}";
Console.WriteLine($"Client sending: {message}");
writer.WriteLine(message);
Task.Delay(1000).Wait();
}
// Signal the server that we're done
writer.WriteLine("exit");
}
}
});
Task.WaitAll(clientTask);
}
}
}