int safe_recv(int fd, struct package *net_package)
{
int sendd = 0, n;
unsigned char *p = (unsigned char *)net_package;
fd_set send_fd;
struct timeval net_timer;
FD_ZERO(&send_fd);
FD_SET(fd, &send_fd);
net_timer.tv_sec=atoi(netinfo.netovertime);
net_timer.tv_usec=0;
//set_net_timer(&net_timer, 20);/* ³¬Ê±¶¨Òå 20 Ãë*/
while(sendd != sizeof(struct package)) {
if(select(fd + 1,&send_fd,NULL , NULL, &net_timer) <= 0)//Èç¹ûÍøÂç¶Ï¿ªÁ¢¼´·µ»Ø-1
return -1;
//set_net_timer(&net_timer,20);/*³¬Ê±¶¨Òå20Ãë*/
net_timer.tv_sec=20;
n = recv(fd, (char *)(p + sendd), sizeof(struct package) - sendd, MSG_CONFIRM);
if(n <= 0) {
if(errno == EINTR)
n = 0;
else
return -1;
}
sendd += n;
/* if(sendd!=1024)
{
printf("%d\n",n);
}*/
}
return sendd;
}
{
int sendd = 0, n;
unsigned char *p = (unsigned char *)net_package;
fd_set send_fd;
struct timeval net_timer;
FD_ZERO(&send_fd);
FD_SET(fd, &send_fd);
net_timer.tv_sec=atoi(netinfo.netovertime);
net_timer.tv_usec=0;
//set_net_timer(&net_timer, 20);/* ³¬Ê±¶¨Òå 20 Ãë*/
while(sendd != sizeof(struct package)) {
if(select(fd + 1,&send_fd,NULL , NULL, &net_timer) <= 0)//Èç¹ûÍøÂç¶Ï¿ªÁ¢¼´·µ»Ø-1
return -1;
//set_net_timer(&net_timer,20);/*³¬Ê±¶¨Òå20Ãë*/
net_timer.tv_sec=20;
n = recv(fd, (char *)(p + sendd), sizeof(struct package) - sendd, MSG_CONFIRM);
if(n <= 0) {
if(errno == EINTR)
n = 0;
else
return -1;
}
sendd += n;
/* if(sendd!=1024)
{
printf("%d\n",n);
}*/
}
return sendd;
}