我现在写一个程序,需要一台机器向另外一台机器发命令,然后由那台机器执行后返回结果。问题有下面几个:我想维护一个命令队列,一个进程或者什么东东的专门负责监控该队列,只要队列非空,就去处队列头命令执行,请问这个监控程序用什么实现;二,发命令的机器如何判断返回的执行结果与它发出去的哪个命令匹配?thx了

解决方案 »

  1.   

    第一个问题
    类似Windows消息机制
    建议用异步选择模型,可参考相关例子
    建立一个发送缓冲(比如用一个链表)简单例子:
    Error = WSASend(m_hSocket,&rb,1,&nWritten,0,&wsa,NULL);
    if( Error == SOCKET_ERROR ) // 发送出错
    {
            int nErrorCode = WSAGetLastError();
    switch(nErrorCode)
    {
    case WSAEWOULDBLOCK:// 等待发送事件,数据未发送(可能缓冲区已满)
    {
    // 将未发送的数据包放到发送列表中(在FD_WRITE事件发生时发送)
    m_SendList->Add(pp);在FD_WRITE事件里继续发送缓冲区中的数据。第二个问题
    肯定发送命令的时候要在前面加入一个标识
    返回的执行结果需要把标识返回来,再查找