我有一个小型服务器-客户端应用程序,它做的不多(客户端连接到服务器,通过管道发送一个数字并接收另一个数字)。
但它一次只能使用一个连接(连接客户端时,没有其他客户端可以访问服务器)
我想让多个客户端一次连接到服务器成为可能,我打算用工作线程来做到这一点。
观察:
#define CONNECT_NAMEDPIPE "\\\\.\\pipe\\ClientToServer"
服务器:
HANDLE namedPipe = CreateNamedPipe (CONNECT_NAMEDPIPE,
PIPE_ACCESS_DUPLEX,
PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT,
2,
sizeof(MinMax),
sizeof(NumberList),
0, // timeout
NULL);
if (namedPipe == INVALID_HANDLE_VALUE) {
printf("Unable to create named pipe\r\nServer closing\r\n");
printf("CreateNamedPipe failed, GLE=%d.\r\n", GetLastError());
} // Error unable create pipe
else {
printf("Server created\r\n");
printf("Awaiting connection\r\n");
ConnectNamedPipe(namedPipe, NULL);
etc ...
}
因此,服务器在 ConnectNamedPipe 上等待,直到客户端连接,然后对于任何其他连接都不可用。
如果我想启用多个连接,我应该如何创建工作线程?
如果每次连接尝试都创建一个新管道(使用新的管道名称/路径 - CONNECT_NAMEDPIPE 不能用于所有)
我如何知道其他人何时尝试连接?我的线程应该在哪里?我被困住了。