У меня есть сервер PIPE на C ++, и я пытаюсь отправить массив int клиенту c #, но когда я запускаю клиент, мой сервер закрывается, даже состояние соединения успешно.Проблема в том, что я запускаю сервер и затем запускаю клиент, но мой клиент подключается к серверу, мой сервер закрывается
C ++ Sever:
#include <stdio.h>
#include <stdint.h>
#include <winsock.h>
#include <string>
// see https://msdn.microsoft.com/en-us/library/bb546085(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1
// for information on creating pipe clients and servers in c++
using namespace std;
int wmain(int argc, wchar_t* argv[]) {
auto pipename = "\\\\.\\pipe\\pipey"; // can be any name, but must start '\\.\pipe\'
printf("Create pipe '%s'\r\n", pipename);
auto pipeHandle = CreateNamedPipe(pipename,
PIPE_ACCESS_DUPLEX,
PIPE_TYPE_MESSAGE | PIPE_WAIT,
1, // # instances
64, // out buff
64, // in buff
0, // timeout, 0 = default of 50ms
NULL); // security attrs
const size_t *myArray[70];
DWORD numBytesWritten = 0;
printf("Waiting for pipe connect\r\n");
if (ConnectNamedPipe(pipeHandle, NULL)) {
printf("Pipe connected\r\n");
for (size_t i = 0; i < 40; i++)
{
myArray[i] += i;
}
WriteFile(
pipeHandle, // handle to our outbound pipe
myArray, // data to send
size_t(myArray) * sizeof(size_t), // length of data to send (bytes)
&numBytesWritten, // will store actual amount of data sent
NULL // not using overlapped IO
);
}else {
printf("Pipe connect failed\r\n");
}
CloseHandle(pipeHandle);
printf("Exiting program\r\n");
return 0;
}
C # client:
static void Main(string[] args)
{
var pipename = "pipey";
var pipeClient = new NamedPipeClientStream(pipename);
Console.WriteLine("Connecting to server pipe '{0}'", pipename);
pipeClient.Connect();
using (StreamReader rdr = new StreamReader(pipeClient, Encoding.Unicode))
{
System.Console.WriteLine(rdr.ReadLine());
}
Console.ReadKey();
}
Проблема в том, что я запускаю сервер, а затем запускаю клиент, но мой клиент подключается к серверу, мой сервер закрывается.