socket访问百度
来源:互联网 发布:mac qq五笔拼音输入法 编辑:程序博客网 时间:2024/05/18 20:52
@property(nonatomic,assign)int clientSocket;
@property (weak, nonatomic) IBOutletUIWebView *webview;
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
//1.连接百度服务器终端命令 ping www.baidu.com
if([selfconnectToServerWithIP:@"61.135.169.125"port:80]){
NSLog(@"连接成功");
}
//2.发送请求
/*
从浏览器监控得到的请求格式
GET / HTTP/1.1
Host: www.baidu.com
Connection: keep-alive (可选)
*/
NSString *sentString =@"GET / HTTP/1.1\r\n"
"Host: www.baidu.com\r\n"
"Connection: close\r\n\r\n";
//keep-alive
NSString *recvString = [selfsendAndRecv:sentString];
// NSLog(@"%@",recvString);
//得到完整的响应,分离响应体
NSRange range = [recvString rangeOfString:@"\r\n\r\n"];
NSString *responseString = [recvString substringFromIndex:range.location+range.length];
// NSLog(@"%@",responseString);
//显示网页webview
/*
baseURL 指定基地址,用于给相对路径找打完整路径
相对路径
http://www.baidu.com/1/1.jpg
1/1.jpg
*/
[self.webviewloadHTMLString:responseString baseURL:[NSURLURLWithString:@"http://www.baidu.com"]];
}
//连接服务器
-(BOOL)connectToServerWithIP:(NSString *)ipString port:(int)port{
self.clientSocket =socket(AF_INET,SOCK_STREAM, IPPROTO_TCP);
struct sockaddr_in addr;
//指定ipv4
addr.sin_family = AF_INET;
//端口号高地位转换
addr.sin_port = htons(port);
addr.sin_addr.s_addr =inet_addr(ipString.UTF8String);
int connResult = connect(self.clientSocket, (conststruct sockaddr *)&addr,sizeof(addr));
if(connResult == 0){
return YES;
}else{
return NO;
}
}
//发送数据并接收数据
-(NSString *)sendAndRecv:(NSString *)message{
//大集合,用于分批次接收百度服务器发送的数据
NSMutableData *mData = [NSMutableDatadata];
char *string = message.UTF8String;
ssize_t sentLen = send(self.clientSocket, string,strlen(string), 0);
char *buffer[1024];
ssize_t recvLen = recv(self.clientSocket, buffer,sizeof(buffer), 0);
//buffer转换成nsdata
NSData *data = [NSDatadataWithBytes:buffer length:recvLen];
[mData appendData:data];
while (recvLen!=0) {
recvLen = recv(self.clientSocket, buffer,sizeof(buffer), 0);
NSData *data = [NSDatadataWithBytes:buffer length:recvLen];
[mData appendData:data];
}
//大集合转换成NSString
NSString *recvString = [[NSStringalloc] initWithData:mData.copyencoding:NSUTF8StringEncoding];
return recvString;
}
@end
- socket访问百度
- 网络:socket 访问百度
- socket 访问百度
- socket 查询百度
- socket 查询百度
- 百度提供google访问
- 用 WebBrowser 访问百度
- 百度蜘蛛 禁止访问
- Android访问百度网站
- 百度地图https访问
- HttpURLConnection访问百度
- 访问百度的整个过程
- socket多线程访问webservice
- Android Socket 访问PC
- android socket访问 限制
- socket 访问设置
- Java socket 访问网页
- SOCKET访问基本模型
- 链队列的基本操作
- Bootstrap多级导航栏(级联导航)的实现代码
- 消除“Permission is only granted to system apps”错误
- HDU5605——数学题(三角函数的应用)
- iOS学习----------图片的简单处理(2)
- socket访问百度
- 关于Activity生命周期
- 华为笔试1 去除重复字符并排序的字符串 c++ string 实现
- 六种常用的设计模式java实现(三)责任链模式
- 1084. Broken Keyboard (20)
- 【数据结构与算法】数据结构+算法=程序
- 安卓开发:将数据返回给上一个活动
- hdu 1535 Invitation Cards(邻接表spfa)
- Linux 文件系统:procfs, sysfs, debugfs 用法简介