关于socket在64位系统下运行出现的问题
原来一段代码在32位下是没问题的,强制64位后接收图像数据不全,recv()函数经常返回-1导致显示失败。代码如下:
if(sock==NULL)
sock = (int)socket(AF_INET, SOCK_STREAM, 0);
if(connect((int)sock, (struct sockaddr *)&sin, sizeof(sin)) != -1)
{
//发送请求
send((int)sock, (char*)&msgRequest, sizeof(MSGREQUEST), 0);
char sRecvBuf[RECVSIZE] = "\0";
int ImageSize=0;
recv((int)sock, (char *)&ImageSize, 4, 0);
if(ImageSize>0)
{
char *CmpImg = (char *)malloc(ImageSize);
long lFileOffset = 0;
while(lFileOffset < ImageSize)
{
long iRecvCnt = recv((int)sock, sRecvBuf, RECVSIZE, 0);
iRecvCnt经常返回-1
if(iRecvCnt <= 0)
break;
memcpy(CmpImg+lFileOffset,sRecvBuf,iRecvCnt);
lFileOffset += iRecvCnt;
free(CmpImg);
}
}
本人对socket这块不是很熟,那位大大告诉一下怎么修改