有两台电脑是连在一起的,我如何用VC++可以获取另外一台计算机的系统时间??(只有我的电脑上有程序).要利用数据库操作吗?请指点!!我实在没有时间去查资料了具体情况是这样的:那台计算机要作为数据库服务器(SQL Server),我从我电脑操作那电脑的数据库(保存数据),也可能有多个计算机都访问它(保存数据).为了保持多台电脑保存数据的时间有个统一的时间基准,要把那计算机(服务器)的时间作为统一的时间值标准,然后各个客户机依据这个时间去修改自己的系统时间.这样就可以知道各个客户机保存数据的时间(时间标准一致).或者实现这功能你有什么更好的保持时间一致的办法吗??请赐教!!!先谢了.
  急啊!!!

解决方案 »

  1.   

    执行命令:
    net time \\192.168.0.1
      

  2.   

    #define EXECDOSCMD "net time \\192.168.0.1" 
    BOOL ExecDosCmd()
    {
    SECURITY_ATTRIBUTES sa;
    HANDLE hRead,hWrite;

    sa.nLength = sizeof(SECURITY_ATTRIBUTES);
    sa.lpSecurityDescriptor = NULL;
    sa.bInheritHandle = TRUE;
    if (!CreatePipe(&hRead,&hWrite,&sa,0)) 
    {
    return FALSE;


    STARTUPINFO si;
    PROCESS_INFORMATION pi; 
    si.cb = sizeof(STARTUPINFO);
    GetStartupInfo(&si); 
    si.hStdError = hWrite;
    si.hStdOutput = hWrite;
    si.wShowWindow = SW_HIDE;
    si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
             //关键步骤,CreateProcess函数参数意义请查阅MSDN
    if (!CreateProcess(NULL, EXECDOSCMD
    ,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi)) 
    {
    return FALSE;
    }
    CloseHandle(hWrite);

    char buffer[4096] = {0};
    DWORD bytesRead; 
    while (true) 
    {
    if (ReadFile(hRead,buffer,4095,&bytesRead,NULL) == NULL)
    break;
    //buffer中就是执行的结果,可以保存到文本,也可以直接输出
                      printf(buffer);
    Sleep(200); 

             return TRUE;
    }
      

  3.   

    也可以到数据库服务器那边去select啊。
      

  4.   

    请问 bohut(●伯虎●) buffer中得到的是什么?是我要的机器系统时间吗?可是我试了,输出结果是
    NET TIME 
    [\\computername | /DOMAIN[:domainname] | /RTSDOMAIN[:domainname]] [/SET]
             [\\computername] /QUERYSNTP
             [\\computername] /SETSNTP[:ntp server list]
    怎么不对啊?
      

  5.   

    你应该去查一下 net time 的用法
      

  6.   

    取sql server的时间(用getdate),然后每个终端要使用本机时间时用sql server取得的时间就是了,不过这样分步操作,不能保证时间的精度,有点局限性
      

  7.   

    保存数据时间一致?
    什么意思,是指保存数据到数据库的时间?这个时间你想保存到哪?
    如果保存在数据库,可以在表里加个字段 MarkTime,然后默认值设置为getdate()就可以了