如题,先谢谢了。
我的传送接受函数如下,我需要在传送后,如果超过三十秒直接返回错误,并短开连接,怎么处理?BOOL Send_Receive_Packet(SOCKET& hSocket,char *Sendbuffer, char *Recv)
{
int nPacket = 0;
int nRet;
char szSend[sizeof(CC_Transaction_Request)];
char szRecv[sizeof(CC_Transaction_Response)];
unsigned long nTotalSend,nTotalRecv;
unsigned int nSent = 0;
unsigned int nRecv = 0; memcpy((BYTE*)szSend,Sendbuffer,sizeof(CC_Transaction_Request));
nTotalSend= sizeof(CC_Transaction_Request);
nTotalRecv= sizeof(CC_Transaction_Response);
while(nSent < nTotalSend)
{
nRet = send(hSocket, szSend + nSent, nTotalSend - nSent, 0);
if(nRet == SOCKET_ERROR || nRet == 0 || nRet==-1 )
{
closesocket(hSocket);
hSocket = INVALID_SOCKET;
return FALSE ;
}
nSent += nRet;
}
while(TRUE)
{
nRet = recv(hSocket, szRecv + nRecv, nTotalRecv - nRecv, 0);
if(nRet == SOCKET_ERROR || nRet == 0 || nRet==-1)
{
closesocket(hSocket);
hSocket = INVALID_SOCKET;
return FALSE ;
}
nRecv += nRet;
if(nRecv < sizeof(CC_Transaction_Response))
continue;
else
break;
}
memcpy(Recv,szRecv,nRecv);
return TRUE;
}
我的传送接受函数如下,我需要在传送后,如果超过三十秒直接返回错误,并短开连接,怎么处理?BOOL Send_Receive_Packet(SOCKET& hSocket,char *Sendbuffer, char *Recv)
{
int nPacket = 0;
int nRet;
char szSend[sizeof(CC_Transaction_Request)];
char szRecv[sizeof(CC_Transaction_Response)];
unsigned long nTotalSend,nTotalRecv;
unsigned int nSent = 0;
unsigned int nRecv = 0; memcpy((BYTE*)szSend,Sendbuffer,sizeof(CC_Transaction_Request));
nTotalSend= sizeof(CC_Transaction_Request);
nTotalRecv= sizeof(CC_Transaction_Response);
while(nSent < nTotalSend)
{
nRet = send(hSocket, szSend + nSent, nTotalSend - nSent, 0);
if(nRet == SOCKET_ERROR || nRet == 0 || nRet==-1 )
{
closesocket(hSocket);
hSocket = INVALID_SOCKET;
return FALSE ;
}
nSent += nRet;
}
while(TRUE)
{
nRet = recv(hSocket, szRecv + nRecv, nTotalRecv - nRecv, 0);
if(nRet == SOCKET_ERROR || nRet == 0 || nRet==-1)
{
closesocket(hSocket);
hSocket = INVALID_SOCKET;
return FALSE ;
}
nRecv += nRet;
if(nRecv < sizeof(CC_Transaction_Response))
continue;
else
break;
}
memcpy(Recv,szRecv,nRecv);
return TRUE;
}
解决方案 »
- 急!!求教高手
- 微软Visual C++项目组征求开发人员意见以规划下一个版本
- 如何调用int GetWindowText(hWnd,LPTSTR lpString,Int nMaxCount)有三个参数的函数?
- 有没有这样的设备,很多按钮通过串口或者什么连接计算机
- 有关Excel的操作(VC) 问题????
- public 的变量指针怎变了?
- 请各位指教一个运行程序出错!调试完给分!
- 如何导出MFC静态连接库中的类?
- 怎样保存一个CFont对象到文件里?以后还可以读出来的Serialize()函数怎样写?
- 关于CString
- 请教CreateWindowEX的用法
- 怎样在死循环里面通过一个键盘钩子来退出循环?
int TimeOut=6000; //设置发送超时6秒
if(::setsockopt(cClient,SOL_SOCKET,SO_SNDTIMEO,(char *)&TimeOut,sizeof(TimeOut))==SOCKET_ERROR){
return 0;
}
TimeOut=6000;//设置接收超时6秒
if(::setsockopt(cClient,SOL_SOCKET,SO_RCVTIMEO,(char *)&TimeOut,sizeof(TimeOut))==SOCKET_ERROR){
return 0;
}