import "ViewController.h"
import <sys/socket.h>
import <netinet/in.h>
import <arpa/inet.h>
@interface ViewController ()
@end
@implementation ViewController
-
(void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.// 1. 创建socket
// 第一个参数: domain 协议簇 指定IPv4
// 第二个参数: type 类型 流式socket 或者是数据包socket
// 第三个参数: protocol 协议 TCP 或DGP// 返回值 成功返回socket描述符的个数 失败为-1;
int clientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);// 2. 建立连接
// 第一个参数: socket
// 第二个参数(结构体): 地址的ip与端口
// 第三个参数: 结构体长度;
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
addr.sin_port = htons(12345);int result = connect(clientSocket, (const struct sockaddr *)&addr, sizeof(addr));
// 连接成功返回0 失败非0
if (result == 0) {
NSLog(@"连接成功");
}else{
NSLog(@"连接失败");
return;
}// 3. 发送数据
// 第一个参数 socket 第二个参数 传输的内容 第三个; 第四个参数一般为0;
// 返回的是:传输成功的字符数 失败返回-1
const char *str = "hello Guys";
ssize_t sendMsg = send(clientSocket, str, strlen(str), 0);
NSLog(@"传输成功的字符数%zd",sendMsg);// 4. 接收数据
// 用buffer 接收数据
uint8_t buffer[1024];
// 返回的是接收的字节长度
ssize_t reciveMsg = recv(clientSocket, buffer, sizeof(buffer), 0);//将字节数转换为 二进制数据在转换为字符串
NSData *data = [NSData dataWithBytes:buffer length:reciveMsg];
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"接收成功%@",string);// 5. 关闭连接
close(clientSocket);
}
使用socket 连接到百度:
import "ViewController.h"
import <sys/socket.h>
import <netinet/in.h>
import <arpa/inet.h>
@interface ViewController ()
@end
@implementation ViewController
-
(void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.// 1. 创建socket
// 第一个参数: domain 协议簇 指定IPv4
// 第二个参数: type 类型 流式socket 或者是数据包socket
// 第三个参数: protocol 协议 TCP 或DGP// 返回值 成功返回socket描述符的个数 失败为-1;
int clientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);// 2. 建立连接
// 第一个参数: socket
// 第二个参数(结构体): 地址的ip与端口
// 第三个参数: 结构体长度;
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
addr.sin_port = htons(12345);int result = connect(clientSocket, (const struct sockaddr *)&addr, sizeof(addr));
// 连接成功返回0 失败非0
if (result == 0) {
NSLog(@"连接成功");
}else{
NSLog(@"连接失败");
return;
}// 3. 发送数据
// 第一个参数 socket 第二个参数 传输的内容 第三个; 第四个参数一般为0;
// 返回的是:传输成功的字符数 失败返回-1
const char *str = "hello Guys";
ssize_t sendMsg = send(clientSocket, str, strlen(str), 0);
NSLog(@"传输成功的字符数%zd",sendMsg);// 4. 接收数据
// 用buffer 接收数据
uint8_t buffer[1024];
// 返回的是接收的字节长度
ssize_t reciveMsg = recv(clientSocket, buffer, sizeof(buffer), 0);//将字节数转换为 二进制数据在转换为字符串
NSData *data = [NSData dataWithBytes:buffer length:reciveMsg];
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"接收成功%@",string);// 5. 关闭连接
close(clientSocket);
}
网友评论