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);

  • 相关阅读:
    vc 网络编程(socket)
    《精通Windows API-函数、接口、编程实例》——第4章文件系统
    WindowsAPI使用详解——GetVersion|GetVersionEx 获取操作系统版本和名称
    Windows编程 鼠标
    Windows 编程 键盘
    Windows编程 Windows程序的生与死(下)
    二叉查找树——A1043.Is it a Binary Search Tree(25)
    Springboot + ElasticSearch 构建博客检索系统
    树的遍历——A1053.Path of Equal Weight(30) 只可DFS不可BFS
    树的遍历——A1004.Counting Leaves(30) 给出一棵树,问每一层有多少叶子节点(可DFS也可BFS)
  • 原文地址:https://www.cnblogs.com/PJXWang/p/9077092.html
Copyright © 2011-2022 走看看