有没有办法用c ++从服务器发送命令到客户端? 我使用send()函数,但我必须将数字(如0x100)转换为字符串,然后将字符串转换为客户端中的数字... 基本上是直接向客户发送号码的功能...
服务器:
ZeroMemory(msg,sizeof(msg));
wsprintf( msg , "142");
send(connect_sock ,(char*) msg , sizeof(msg) , 0);
客户端:
ZeroMemory(msg,sizeof(msg));
recv (connect_sock, msg, sizeof(msg)-1, 0);
int i = atoi(msg);
if ( i == 142 )
...
答案 0 :(得分:1)
简单 - 您不能,但您可以自己编写,或者您可以找到可以为您完成所有操作的库。
1)boost :: asio(c ++)有序列化示例
2)libcli(c)用于telnet协议(https://github.com/dparrish/libcli)
3)libtpl(c)序列化(http://troydhanson.github.io/tpl/)
更多......
原始描述符的示例(使用libtpl打包argv):
自己连接和创建serverFd
tpl_node *tn;
char* bufferArgv;
/** @todo pass array or string? */
tn = tpl_map("iA(s)", &argc, &bufferArgv);
tpl_pack(tn, 0);
char** _argv;
for (_argv = argv; *_argv != 0; _argv++)
{
bufferArgv = *_argv;
tpl_pack(tn, 1);
}
tpl_dump(tn, TPL_FD, serverFd);
tpl_free(tn);
打开包装
tpl_node *tn;
char* bufferArgv;
int argc;
tn = tpl_map("iA(s)", &argc, &bufferArgv);
tpl_load(tn, TPL_FD, serverFd);
tpl_unpack(tn, 0);
如果你足够勇敢,可以替换tpl_dump和tpl_load并发送raw tn.data
答案 1 :(得分:0)
你可以尝试这样,使用系统功能 服务器:
wsprintf(msg,“142”); send(connect_sock,(char *)msg,sizeof(msg),0);
客户:
recv(connect_sock,msg,sizeof(msg)-1,0); string result = system(“./%s”,msg);
我不确定abt功能。请检查这个并告诉我。