问题描述
FD_ZERO(&readfds);FD_SET(ListenSocket,&readfds);time.tv_sec=2;hNoClients=InitalClientCount();while(1){dwRet=select(ListenSocket+1,&readfds,NULL,NULL,&time);if(dwRet<0){FD_ZERO(&readfds);continue;}elseif(dwRet==0){time.tv_sec=2;FD_ZERO(&readfds);FD_SET(ListenSocket,&readfds);printf("nodataonsocket");continue;}else{if(FD_ISSET(ListenSocket,&readfds)){while(gwClientCount<MAXCONNECTION){nLen=sizeof(SOCKADDR_IN);socketclient=accept(ListenSocket,(LPSOCKADDR)&SockAddr,&nLen);if(socketclient==INVALID_SOCKET){break;}lpClientReq=(structClientRequestInfo*)malloc(sizeof(ClientRequestInfo));memset(lpClientReq,0,sizeof(structClientRequestInfo));lpClientReq->ClientSocket=socketclient;lpClientReq->dwConnecttime=GetTickCount();lpClientReq->dwRecv=0;lpClientReq->dwSend=0;lpClientReq->nMethod=0;p=szWebRoot;//lpClientReq->szFilename={"c:webpages"};//charp[256]={0};strcat(lpClientReq->szFilename,p);hClientThread=CreateThread(NULL,NULL,&ClientThread,(LPVOID)lpClientReq,NULL,&dwThreadId);printf("saan");}}}}上面是我的服务器端select和accept,我是用线程实现的,这个服务器器端程序,我用internetexplorer连接自己写的服务器的时候,很奇怪,按刷新按钮select可以检测到数据,但是用回车按钮就不可以。(第一次连接除外),我真的不知道是什么原因,还有就是internetexplorer不能把服务器的数据打开,我在自己代码里那send()检测时数据是已经都发送出去了,是不是我的响应头不正确呢?请高人指点一下,万分感谢,高分感谢。有人能帮我全部解决,银行卡汇钱都可以~~~!!
解决方案
解决方案二:
你说的回车是怎么操作的?
解决方案三:
就是在输入URL后按下回车啊,不包括第一次输入(第一次输入时可以),在同一URL后输入回车不响应,按常理来说,回车键是从新连接,应该能够select到数据的,可以却没有
解决方案四:
在每次select之后都需要FD_ZERO这个把句柄清0的.