[Dev] something wrong with socket
i want to use socket to connect www.google.com and test it.but there is something wrong with it.
Code:
int mysocket = socket(AF_INET,SOCK_STREAM,0);
NSLog(@"mysocket=%d\n",mysocket);
struct sockaddr_in sa;
bzero(&sa, sizeof(sa));
sa.sin_family = AF_INET;
sa.sin_port = htons(80);
sa.sin_addr.s_addr = inet_addr(@"www.google.com");
int len = sizeof(sa);
int nRet = connect(mysocket,(struct sockaddr *)&sa,len);
if(nRet == 0)
{
NSLog(@"success!\n");
}
else
{
NSLog(@"error! %d\n",errno); errno=2]
}
char buf[] ="GET / 1.0\r\n User-Agent: Mozilla/5.0\r\n accept: */*\r\n\r\n";
nRet = send(mysocket,buf,sizeof(buf),0);
if(nRet == sizeof(buf))
{
NSLog(@"nRet=%d!\n",nRet);
}
else
{
NSLog(@"nRet=%d!\n",nRet);
}
if(nRet >0 )
{
char buffer[40000];
bzero(buffer,sizeof(buffer));
nRet= 0;
int nTotal = 0;
while(nRet >0)
{
nRet = recv(mysocket,&buffer[nTotal],2048,0);
if(nRet>0)
nTotal+=nRet;
}
if(nTotal > 0)
{
}
else
{
NSLog(@"recv error\n");
}
}
else
{
NSLog(@"send error\n");
}
[Terminal]
2008-01-15 18:11:11.688 hello[560:d03] mysocket=9
2008-01-15 18:11:11.713 hello[560:d03] error! 2
2008-01-15 18:11:11.716 hello[560:d03] nRet=-1!
when i use the following code ,it works ok!!
Code:
NSMutableURLRequest *theRequest;
NSString* theURL = [NSMutableString stringWithString:@"http://www.google.com"];
theRequest=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:theURL]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:15.0];
[theRequest setHTTPMethod:@"GET"];
[theRequest setValue:@"*/*\r\n\r\n" forHTTPHeaderField:@"accept"];
[theRequest setValue:@"Close" forHTTPHeaderField:@"Connection"];
urlConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
Then why? why does the socket run error? Any one can help me?
Thanks to all!