解释家庭作业要求,涉及客户/服务器通信

时间:2012-07-14 01:32:29

标签: c++

我一直致力于一项任务,要求我们实施一些提供给我们的代码,允许创建可以进行通信的服务器和客户端。我是在main中分叉一个进程,然后测试可用的各种请求选项,然后测量通过子进程或本地使用函数执行此操作所花费的时间差。我不确定我是否正确地解释了这些要求。除此之外,所有定时功能都返回0秒。不确定这是否正确。我会发布一小部分代码。

家庭作业陈述(只占一小部分):

  

测量请求的调用延迟(即,请求之间的时间)   调用请求直到响应回来。)比较一下   有时间将相同的请求字符串提交给一个函数   接受请求并返回回复(与单独的进程相比)   这样做)。提交一份比较两者的报告。

在main之前声明的函数:

string myfunc(string request){
  //string myreq = request;
  RequestChannel my_func_channel("control", RequestChannel::CLIENT_SIDE);
  string reply1 = my_func_channel.send_request(request);
  return reply1;
}

我如何解释代码中的方向:

int main(int argc, char * argv[]) {

  //time variables
  time_t start, end;
  double time_req_1, time_req_func;

  cout << "client.C  Starting...\n" << flush;
  cout << "Forking new process...\n " << flush;      
  pid_t childpid = fork();

  if(childpid == -1)
    cout << "Failed to fork.\n" << flush;
  else if(childpid == 0){
    cout << "***Loading Dataserver...\n" << flush;
    //Load dataserver   
    RequestChannel my_channel("control", RequestChannel::CLIENT_SIDE);
    cout << "***Dataserver Loaded.\n" << flush;

    time(&start);
    string reply1 = my_channel.send_request("hello");
    cout << "***Reply to request 'hello' is '" << reply1 << "'\n" << flush;
    time(&end);
    time_req_1 = difftime(end,start);  

    cout <<"\n\nRequest 1 took     :  "<< time_req_1 << flush;

  }
  else{//parent
    time(&start);
    string s = myfunc("hello");
    time(&end);
    time_req_func = difftime(end,start);
    cout <<"\nmyfunc Request took:  "<< time_req_func << "\n" << flush;

  }
  usleep(1000000);
}

这是我的代码的缩写版本,但包含了解最新情况所需的一切。我完成了指示吗?另外,我的0秒结果可能是正确的吗?

1 个答案:

答案 0 :(得分:0)

一次这样做所花费的时间可能(可能)太小而无法测量,因此需要花多长时间才能完成它多长时间,然后确定每个人花多长时间。