লিনাক্সের এফওয়াইআই ডটনেট কোর নামক পাইপগুলি সমর্থন করে না, আপনি যদি লিনাক্সে থাকেন তবে পরিবর্তে tcplistener ব্যবহার করে দেখুন
এই কোডটিতে ক্লায়েন্টের রাউন্ড ট্রিপ একটি বাইট রয়েছে।
- ক্লায়েন্ট বাইট লিখেছেন
- সার্ভার বাইট পড়ে
- সার্ভার বাইট লিখেছেন
- ক্লায়েন্ট বাইট পড়ে
ডটনেট কোর 2.0 সার্ভার কনসোল অ্যাপ্লিকেশন
using System;
using System.IO.Pipes;
using System.Threading.Tasks;
namespace Server
{
class Program
{
static void Main(string[] args)
{
var server = new NamedPipeServerStream("A", PipeDirection.InOut);
server.WaitForConnection();
for (int i =0; i < 10000; i++)
{
var b = new byte[1];
server.Read(b, 0, 1);
Console.WriteLine("Read Byte:" + b[0]);
server.Write(b, 0, 1);
}
}
}
}
ডটনেট কোর 2.0 ক্লায়েন্ট কনসোল অ্যাপ্লিকেশন
using System;
using System.IO.Pipes;
using System.Threading.Tasks;
namespace Client
{
class Program
{
public static int threadcounter = 1;
public static NamedPipeClientStream client;
static void Main(string[] args)
{
client = new NamedPipeClientStream(".", "A", PipeDirection.InOut, PipeOptions.Asynchronous);
client.Connect();
var t1 = new System.Threading.Thread(StartSend);
var t2 = new System.Threading.Thread(StartSend);
t1.Start();
t2.Start();
}
public static void StartSend()
{
int thisThread = threadcounter;
threadcounter++;
StartReadingAsync(client);
for (int i = 0; i < 10000; i++)
{
var buf = new byte[1];
buf[0] = (byte)i;
client.WriteAsync(buf, 0, 1);
Console.WriteLine($@"Thread{thisThread} Wrote: {buf[0]}");
}
}
public static async Task StartReadingAsync(NamedPipeClientStream pipe)
{
var bufferLength = 1;
byte[] pBuffer = new byte[bufferLength];
await pipe.ReadAsync(pBuffer, 0, bufferLength).ContinueWith(async c =>
{
Console.WriteLine($@"read data {pBuffer[0]}");
await StartReadingAsync(pipe); // read the next data <--
});
}
}
}
Thread.Sleep