#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);
}
iOS中socket的简单通信方式
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...