recv 收不到东西 一收返回值就是0
多recv 几次就返回 SOCKET_ERROR了
为什么?
int nReturnValue;
SOCKET ss;
ss = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
struct sockaddr_in addr;
memset(&addr,0,sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(80);
hostent * h = gethostbyname("www.163.net");
memcpy(&addr.sin_addr.s_addr,h->h_addr_list[0],h->h_length);
nReturnValue = connect(ss,(sockaddr *)&addr,sizeof(addr));
char szTempBuffer[1024*8];
sprintf(szTempBuffer,"%s","GET / HTT/P1.1");
sprintf(szTempBuffer,"%s\r\n%s",szTempBuffer,"Accept: */*");
sprintf(szTempBuffer,"%s\r\n%s",szTempBuffer,"User-Agent: Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)");
sprintf(szTempBuffer,"%s\r\n%s",szTempBuffer,"Referer: http://210.5.31.13:80/bbs/Login.asp");
sprintf(szTempBuffer,"%s\r\n%s",szTempBuffer,"\r\n");
nReturnValue = send(ss,szTempBuffer,strlen(szTempBuffer),0);
nReturnValue = recv(ss,szTempBuffer,sizeof(szTempBuffer),0);
closesocket(ss);
多recv 几次就返回 SOCKET_ERROR了
为什么?
int nReturnValue;
SOCKET ss;
ss = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
struct sockaddr_in addr;
memset(&addr,0,sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(80);
hostent * h = gethostbyname("www.163.net");
memcpy(&addr.sin_addr.s_addr,h->h_addr_list[0],h->h_length);
nReturnValue = connect(ss,(sockaddr *)&addr,sizeof(addr));
char szTempBuffer[1024*8];
sprintf(szTempBuffer,"%s","GET / HTT/P1.1");
sprintf(szTempBuffer,"%s\r\n%s",szTempBuffer,"Accept: */*");
sprintf(szTempBuffer,"%s\r\n%s",szTempBuffer,"User-Agent: Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)");
sprintf(szTempBuffer,"%s\r\n%s",szTempBuffer,"Referer: http://210.5.31.13:80/bbs/Login.asp");
sprintf(szTempBuffer,"%s\r\n%s",szTempBuffer,"\r\n");
nReturnValue = send(ss,szTempBuffer,strlen(szTempBuffer),0);
nReturnValue = recv(ss,szTempBuffer,sizeof(szTempBuffer),0);
closesocket(ss);
估计是命令错了,所以对方的回应与你的操作有差别!
我发现越发的鬼大了我自己写了个简单 server 监听 看自己发过来东西不 nnd 那边 recv sned 一切 返回值都正常 代码如下 WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD( 2, 2 );
WSAStartup(wVersionRequested, &wsaData );
int nReturnvalue = -1;
SOCKET s_server;
nReturnvalue = s_server = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); struct sockaddr_in addr;
memset(&addr,0,sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(1234);
addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
nReturnvalue = bind(s_server,(sockaddr*)&addr,sizeof(addr));
nReturnvalue = listen(s_server,10);
SOCKET s_sendrecv;
struct sockaddr_in ServerSocketAddr;
int addrlen;
addrlen=sizeof(ServerSocketAddr);
s_sendrecv = accept(s_server,(sockaddr*)&ServerSocketAddr,&addrlen);
char szTemp[8*1024];
nReturnvalue = recv(s_sendrecv,szTemp,sizeof(szTemp),0);
//AfxMessageBox(szTemp);
sprintf(szTemp,"%s","asfdasdfasfdasfdasdfasdf");
nReturnvalue = send(s_sendrecv,szTemp,strlen(szTemp),0); WSACleanup ();