最新消息:关注【太平洋学习网】微信公众号,可以获取全套资料,【全套Java基础27天】【JavaEE就业视频4个月】【Android就业视频4个月】

iOS纯c语言socket客户端代码笔记

扩展 admin 浏览 评论

ios中的socket完全使用的是c语言编写,这只是socket客户端代码,由于使用的是mac电脑,socket服务器端测试代码就不需要写了,直接使用mac自带的服务器监听命令nc -lk port(端口)就可以了。

ios socket客户端测试demo如下,本人将c语言的socket代码写在了ios项目中的viewDidLoad初始化方法里面了,你也可以写在c语言或者object-c的main函数中。

#import "ViewController.h"
#import <sys/socket.h>
#import <netinet/in.h>
#import <arpa/inet.h>
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //-----以下为socket代码-----
    //1.创建客户端socket
    //参数1:遵守的ip协议类型AF_INET Ipv4,AF_INET6 IPV6
    //参数2:端口类型SOCK_STREAM TCP,SOCK_DGRAM UDP
    //参数3:选择的协议类型,一般为0
    //返回值:如果>0则成功
    int socketNumber = socket(AF_INET, SOCK_STREAM, 0);
    
    //2.创建服务器端socket
    struct sockaddr_in serverAddress;
    //设置ip协议为ipv4
    serverAddress.sin_family = AF_INET;
    //服务器端socket的ip地址
    serverAddress.sin_addr.s_addr = inet_addr("127.0.0.1");
    //设置服务器端口
    serverAddress.sin_port = htons(12345);
    
    //3.连接两个socket
    //参数1:客户端socket
    //参数2:服务器端socket/结构体
    //参数3:第2个参数的长度
    //返回值!=0连接失败
    //如果要连接成功,必须实时监测服务器的端口nc -lk 12345
    int conn = connect(socketNumber, (const struct sockaddr*)&serverAddress, sizeof(serverAddress));
    NSLog(@"%d",conn);
    
    //4.发送信息给服务器
    //参数1:客户端socket
    //参数2:void *传递给服务器的数据
    //参数3:size_t传递给服务器的长度
    //参数4:传0等待服务器响应数据
    NSString *msg = @"hello socket";
    send(socketNumber, msg.UTF8String, strlen(msg.UTF8String), 0);
    
    //5.接收服务器返回的数据
    //参数1:服务器确定返回给哪一个客户端数据
    //参数2:void *接受服务器返回的地址(区域)
    //参数3:size_t接收地址的长度
    //参数4:等待服务器返回数据
    //返回值:就是服务器返回的数据长度
    ssize_t buffer[1024];
    size_t length = recv(socketNumber, buffer, sizeof(buffer), 0);
    //获取服务器返回的数据(从buffer中获取需要的数据)
    //根据二进制数据,拼接字符串
    NSString *returnMsg = [[NSString alloc] initWithBytes:buffer length:length encoding:NSUTF8StringEncoding];
    NSLog(@"returnMsg:%@",returnMsg);
    
    //服务器返回数据之后关闭socket
    close(socketNumber);

}

@end

然后我们打开mac的终端工具,输入nc -lk 12345这个命令,就可以启动mac自带的服务器监听工具了,这个时候运行我们的ios项目,就可以在mac终端中输出“hello socket”。

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/kuozhan/2017/0311/c_socket.html

    与本文相关的文章

    发表我的评论
    取消评论

    表情

    您的回复是我们的动力!

    • 昵称 (必填)

    网友最新评论