zoukankan      html  css  js  c++  java
  • socket 编程

    #import <sys/socket.h>

    #import <netinet/in.h>

    #import <arpa/inet.h>

    #import <unistd.h>

    /*

         1 创建Socket

         参数

         domain:协议域AF_INET->IPV4

         type: socket类型SOCK_STREAM(TCP) SOCK_DGRAM(UDP)

         protocol :IPPROTO_TCP,如果写0,就会自动根据第二个参数选择

         返回值 :int socket

         */

       

        int clientSocket = socket(AF_INET, SOCK_STREAM, 0);

        /*

         2.连接到服务器

         参数

         1>客户端socket

         2>指向结构图sockaddr的指针,其中包括目的端口的IP地址

         3>结构体数据长度

         返回值 : 0 成功  / 其他 错误代号

         */

        struct sockaddr_in serverAddr;

        //端口号

        serverAddr.sin_port = htons(80);

        

        serverAddr.sin_family=AF_INET;

        

        //ip地址 inet_addr函数,可以将ip地址转成一个数字

        serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1");

        

        // nc -lk 12345  终端监听端口号12345的数据

        int connResult = connect(clientSocket, (const struct sockaddr *)&serverAddr, sizeof(serverAddr));

        if (connResult == 0) {

            NSLog(@"连接成功");

        }else{

            NSLog(@"连接失败:%d",connResult);

            return;

        }

        

        /*

         3 发送数据

         参数

         1>客户端socket

         2>发送内容地址(指针)

         3>发送内容长度

         4>发生方式标志,一般为0

         返回值

         如果成功,则返回字节数,失败则返回SOCKET_ERROR

         */

        NSString *msg = @"GET / HTTP/1.1 ""Host:www.baidu.com ";

        ssize_t sendlen = send(clientSocket, msg.UTF8String, strlen(msg.UTF8String), 0);

        NSLog(@"发送了 %ld 个字节",sendlen);

        

        /*

         4. 读取数据

         参数

         1>客户端socket

         2>接受内容缓冲区地址

         3>接受内容缓冲区长度

         4>接受方式,0表示阻塞,必须等待服务器返回数据

         返回值

         如果成功 则返回读入的字节数,失败则返回SOCKET_ERROR

         */

        uint8_t buffer[1024];

        size_t recvlen = recv(clientSocket, buffer, sizeof(buffer), 0);

        NSLog(@"接受到了 %ld 个字节", recvlen  );

        NSData *data = [NSData dataWithBytes:buffer length:recvlen];

        NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

        NSLog(@"%@",str);

        

        /*

         5.关闭连接

         */

        close(clientSocket);

  • 相关阅读:
    直击 KubeCon 2019 现场,阿里云 Hands-on Workshop 亮点回顾
    分享 KubeCon 2019 (上海)关于 Serverless 及 Knative 相关演讲会议
    MaxCompute 费用暴涨之新增SQL分区裁剪失败
    UI2CODE复杂背景无法识别?闲鱼工程师这样打造高准确率方案
    阿里云发布边缘容器,云边端一体化时代来临
    中间件性能挑战赛上线了两大黑科技,是高手就盘它!!
    MaxCompute 费用暴涨之存储压缩率降低导致SQL输入量变大
    通知: Spring Cloud Alibaba 仓库迁移
    MaxCompute 项目子账号做权限管理
    性能压测工具选型对比
  • 原文地址:https://www.cnblogs.com/PJXWang/p/9077092.html
Copyright © 2011-2022 走看看