服务器处理的客户端命令C
Clients commands processed by the server C
我正在Win32 (c++)环境中构建一个服务器/客户端聊天应用程序,使用命名管道,我正在努力寻找一个更好的解决方案来处理客户端请求的命令(不是并发问题也不是同步)。我能想到的唯一解决办法是:
假设客户端只能向服务器发送一些命令,如:
-> Logon arg1 arg2
-> Register arg1 arg2
-> Chat_info
-> Exit
现在,在服务器端必须处理信息,但是他如何捕获参数呢?
我想要完成的是与服务器的交互,而不是简单的回声响应,例如:作为客户端,我会发送:Logon Ricardo pass123服务器将检查用户名和密码是否有效。
谢谢你的帮助
我终于找到了一个更好的解决办法。
Server.c
while(1){
//...
printf("[SERVER] Waiting for a client... (ConnectNamedPipe)n");
if(!ConnectNamedPipe(hPipe, NULL)){
perror("Connection Error!");
//exit(-1);
}
CreateThread(NULL,0,ListenClient,(LPVOID)hPipe,0,NULL);
}
每次客户端获得他的命名管道创建,以及获得一个新的线程,在"ListenClient"函数:
DWORD WINAPI ListenClient(LPVOID param) { ... }
,它将读取通过管道的信息,如:
ret = ReadFile(hPipe, buf, 256,(LPDWORD) &n, NULL);
if (!ret || !n)
perror("Error reading the named pipe!");
buf[n] = ' ';
将有尽可能多的条件,每个客户端可以从服务器请求选项,如:
if(strcmp(buf, "Logon")==0)
{
//process the resquest
}
if(strcmp(buf, "Register")==0)
{
//process the request
}
and so on..
这样服务器将从缓冲区中读取并对发送的第一个参数进行简单的字符串比较。
谢谢大家,我希望它能帮助别人!
相关文章:
- "unknown ca"自生成的 CA、证书和客户端/服务器
- 如何将函数集合传递给客户端类,以便将它们当作客户端类本身的成员使用
- 使用调试/崩溃报告将应用程序部署到客户端
- 如何在本地机器上运行c++和javascript客户端代码(hackerbank风格)
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 从服务器传输到客户端的消息不会出现
- OpenSSL TLS服务器-使用客户端证书白名单
- 当服务中的事件被触发时,如何将响应从服务发送回客户端?
- 我可以与 python 服务器而不是 c++ 客户端建立 tcp/ip 套接字吗?
- 提升 Asio TCP 服务器 处理多个客户端
- boost::asio UDP 广播客户端仅接收"fast"数据包
- 如何绑定 C++ gRPC 客户端的网络接口
- C++套接字客户端到 Python 服务器未创建连接
- 用于解析 win64 堆栈跟踪的命令行客户端(可以访问符号服务器)
- 在客户端和备忘录中获取 HTTP 命令
- C++客户端/服务器聊天应用程序 - 从 Ubuntu 命令窗口扫描输入
- 在服务器上执行命令,然后将结果发送到Windows中的客户端
- 从服务器 C++ 向客户端发送命令
- C++ 中客户端程序的可选命令行参数
- 服务器处理的客户端命令C