Witam :)
Napisałem program w c++ prosty serwer:
#include <Windows.h>
#include <cstdio>
int main(void)
{
HANDLE hPipe;
char buffer[1024];
DWORD dwRead;
hPipe = CreateNamedPipe(TEXT("\\\\.\\pipe\\pipe"), PIPE_ACCESS_DUPLEX | PIPE_TYPE_BYTE | PIPE_READMODE_BYTE, PIPE_WAIT, 1, 1024 * 16, 1024 * 16, NMPWAIT_USE_DEFAULT_WAIT, NULL);
while (hPipe != INVALID_HANDLE_VALUE)
{
if (ConnectNamedPipe(hPipe, NULL) != FALSE)
{
while (ReadFile(hPipe, buffer, sizeof(buffer) - 1, &dwRead, NULL) != FALSE)
{
buffer[dwRead] = '\0';
printf("%s", buffer);
}
}
DisconnectNamedPipe(hPipe);
}
return 0;
}
I teraz chciałbym napisać w c# klienta, nie umiem z c# nic ale muszę to na szybko napisać. W necie znalazłem tutorial, na jego podstawie napisałem coś takiego:
private void button1_Click(object sender, EventArgs e)
{
var client = new NamedPipeClientStream("pipe");
client.Connect();
StreamReader reader = new StreamReader(client);
StreamWriter writer = new StreamWriter(client);
while (true)
{
if (String.IsNullOrEmpty("something")) break;
writer.WriteLine("something");
writer.Flush();
Console.WriteLine(reader.ReadLine());
}
}
Po kliknięciu wysyła "something", serwer to odbiera, wyświetla w konsoli ale nie wiem dlaczego klient łapie laga i jedynym wyjściem jest wyłączenie programu. Co muszę tu zmienić żeby działało normalnie?