65,210
社区成员
发帖
与我相关
我的任务
分享
struct record
{
int record_no;
time_t send_time;
time_t recv_time;
bool operator == (record& rcd)
{
return record_no == rcd.record_no;
}
};
vector<record> records;
time_t send_time = time(NULL);
record tmp = record(no, send_time, 0);
// 要把本记录的序号记录在发送的buf里
memcpy(buf, &no, sizeof(no));
memcpy(buf+sizeof(no), msg, sizeof(msg));// msg中是我们具体的消息
lock(...);// 大概是这样,加锁你可以用互斥变量啊、信号量啊实现,我这里就是说想法,Windows里和Linux里有很大不同
records.push_back(tmp);
un_lock(...); // 解锁
send(...); // 服务端要把我们buf中的记录序号返回给我们。
recv(...);// 把数据接收到recv_buf里
time_t recv_time = time(NULL);
int no;
memcpy(&no, recv_buf, sizeof(no));
record tmp;
tmp.record_no = no;
lock();
vector<record>::iterator iter = find(records.begin(), records.end(), tmp);
unlock();
iter->recv_time = recv_time;
// 得到结果:
cout << "for record: " << no << endl;
cout << "time: " << tmp.recv_time - tmp.send_time << endl;