error C2079: “tv”使用未定义的 struct“timeval”

1>d:\教研室\geometric\common.cpp(10) : error C2079: “tv”使用未定义的 struct“timeval”
1>d:\教研室\geometric\common.cpp(22) : error C3861: “gettimeofday”: 找不到标识符
1>d:\教研室\geometric\common.cpp(23) : error C2228: “.tv_sec”的左边必须有类/结构/联合
1>        类型是“int”
1>d:\教研室\geometric\common.cpp(23) : error C2228: “.tv_usec”的左边必须有类/结构/联合
1>        类型是“int”
1>d:\教研室\geometric\common.cpp(33) : error C3861: “gettimeofday”: 找不到标识符
1>d:\教研室\geometric\common.cpp(34) : error C2228: “.tv_sec”的左边必须有类/结构/联合
1>        类型是“int”
1>d:\教研室\geometric\common.cpp(34) : error C2228: “.tv_usec”的左边必须有类/结构/联合
1>        类型是“int”
我建立的这个工程用的是xp系统,VS2005,在我另外一台xp系统,vs2005的台式电脑上这个工程能编译通过,可是我把它复制到我的笔记本上就出现这个问题了,这个问题困扰了我几天,后来我查看了该工程的属性,发现复制过后的C/C++下预处理器/预处理器定义为空,本来应该是WIN32;_DEBUG;_WINDOWS,所以只要把这个加入进去就可以了,工程就能编译通过!
``` static int s_iServerSocket = 0; static stNetAddr stClient = {0}; //static pthread_t s_stServerThread; int TCPSvr_Run(void) { int iRet = -1; int iClientSocket; int iTaskID = 0; int iCLientNumber = 0; struct sockaddr_in stClientaddr; socklen_t addrlen = sizeof(stClientaddr); if (s_iServerSocket <= 0) { cmn_PrtError("server socket not available"); } if(listen(s_iServerSocket,cmnDfn_MAX_CLIENT) < 0) { cmn_PrtError("listen error"); } while (g_iExit == 0) { if(((iClientSocket = accept(s_iServerSocket, (struct sockaddr *)&stClientaddr,&addrlen))) < 0) { cmn_PrtError("accept failed"); } stClient.iServerSocket = iClientSocket; stClient.iClientNumber = iCLientNumber++; if(ThreadPoolSubmit(TCPRcvTrd, &stClient,&iTaskID) < 0) { cmn_PrtError("Error in submitting task to thread pool"); } if(ThreadPoolSubmit(TCPSndTrd, &stClient,&iTaskID) < 0) { cmn_PrtError("Error in submitting task to thread pool"); } } iRet = 0; _Exit: return iRet; } static int s_iClientSocket; static struct sockaddr_in stServerAddr; static stNetAddr stServer = {0}; //static pthread_t s_iClientPhread; int TCPClnt_Run(void) { int iRet = -1; int iTaskID = 0; //struct sockaddr_in stServerAddr; if(s_iClientSocket == -1) { cmn_PrtError("Client socket not available"); } if(connect(s_iClientSocket, (struct sockaddr *)&stServerAddr, sizeof(stServerAddr)) < 0) { cmn_PrtError("Error in connecting to server"); } stServer.iServerSocket = s_iClientSocket; if(ThreadPoolSubmit(TCPSndTrd,&stServer,&iTaskID) < 0) { cmn_PrtError("Error in submitting task to thread pool"); } if (ThreadPoolSubmit(TCPRcvTrd,&stServer,&iTaskID) < 0) { cmn_PrtError("Error in submitting task to thread pool"); } while (g_iExit == 0) { } iRet = 0; _Exit: return iRet; } void* TCPRcvTrd(void *arg) { //int iSockfd = *(int*)arg; //int iSockfd = (int)(intptr_t)arg; //int iLoopNum = 0; stNetAddr * ServerAddr = (stNetAddr *)arg; int iSockfd = ServerAddr->iServerSocket; int iClientNum = ServerAddr->iClientNumber; char crcvBuffer[cmnDfn_BUFF_LEN]; int iBytesReceived; unsigned long long ulTotalBytes = 0; struct timeval stStartTime; struct timeval stEndTime; //struct timeval stDisplayedTime = {0}; float fElapsedTime; float fNetSpeed; gettimeofday(&stStartTime, NULL); while (g_iExit == 0) { if((iBytesReceived = recv(iSockfd, crcvBuffer, sizeof(crcvBuffer), 0)) < 0) { cmn_PrtError("Error in receiving data"); } else if(iBytesReceived == 0) { printf("Client disconnected\n"); break; } ulTotalBytes += iBytesReceived; gettimeofday(&stEndTime,NULL); fElapsedTime = (stEndTime.tv_sec - stStartTime.tv_sec) + (stEndTime.tv_usec - stStartTime.tv_usec) / 1000000.0; fNetSpeed = ((float)ulTotalBytes * 8) / (fElapsedTime * 1000 * 1000); if (fElapsedTime >= DISPLAY_INTERVAL) { //printf("Received: %d bytes\n", ulTotalBytes); if(ServerAddr->iByteNumber != 0) { printf("Client %d Net Speed: %.2f Mbps\r", iClientNum,fNetSpeed); fflush(stdout); } else if(ServerAddr->iByteNumber == 0) { printf("Net Speed: %.2f Mbps\n", fNetSpeed); fflush(stdout); } stStartTime = stEndTime; ulTotalBytes = 0; } } _Exit: //close(iSockfd); pthread_exit(NULL); }```检查代码是否有bug并给出解决方案
最新发布
03-21
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值