Chinaunix

标题: 起线程使用socket两点 [打印本页]

作者: qzc    时间: 2006-11-21 15:11
标题: 起线程使用socket两点

                int spider_readn(CSocket *sockClient, char *buf, int nbytes)
{
    memset(buf, 0, sizeof(buf));
    if ( nbytes Receive(buf+dwRead, nbytes-dwRead);       
        if ( retval 4)//120
        {
            g_nSeq+=1;
            if (g_HBsend)
            {
                char data[TcpMsg_Len]={0};   
                char achseq[TcpMsg_Len-TcpHead_Len]={0};                sprintf(achseq,"hb%dsingle",g_nSeq);
                sprintf(data,"%.5d%s",strlen(achseq),achseq);               
                if(g_sockClient.Send(data,strlen(data))==SOCKET_ERROR)
                {
                    writelog("[ send HBmsg ]fail ??????",0);
                    StartTcp();
                }else{
                    writelog("[ send HBmsg ]succeed ......",0);
                    fd_set fds_t;
                    struct timeval tvSelect;
                    tvSelect.tv_sec = 0;
                    tvSelect.tv_usec = 500 * 1000;//500ºÁÃë
                    FD_ZERO(&fds_t);       
                    FD_SET(g_sockClient.m_hSocket, &fds_t);
                    if ( select(FD_SETSIZE, &fds_t, NULL, NULL, &tvSelect) >= 0 )
                    {
                        if ( FD_ISSET(g_sockClient.m_hSocket, &fds_t) )// g_udpsock > 0 &&
                        {               
                            memset(data,0,sizeof(data));
                            spider_readn(&g_sockClient,data,strlen(achseq)+TcpHead_Len);
                            writelog("[ receive HBmsg ]succeed ......",0,data,1);
                        }
                    }
                }                
            }           
            nHB=0;
        }    
        Sleep(500);
    }   
    g_sockClient.Close();
    return 0;
}
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/11458/showart_204238.html




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2