• socket连接 代码


     dispatch_sync(dispatch_get_global_queue(0, 0), ^{
            // 处理耗时操作的代码块...
            
        
        // 创建socket
        /*
         1.AF_INET: ipv4 执行ip协议的版本
         2.SOCK_STREAM:指定Socket类型,面向连接的流式socket 传输层的协议
         3.IPPROTO_TCP:指定协议。 IPPROTO_TCP 传输方式TCP传输协议
         返回值 大于0 创建成功
         */
        _clientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    
        // 建立连接(与服务器)
        /*
         终端里面 命令模拟服务器 netcat  nc -lk 12345
         参数一:套接字描述符
         参数二:指向数据结构sockaddr的指针,其中包括目的端口和IP地址
         参数三:参数二sockaddr的长度,可以通过sizeof(struct sockaddr)获得
         返回值 int -1失败 0 成功
         */
        struct sockaddr_in addr;
        /* 填写sockaddr_in结构*/
        addr.sin_family = AF_INET;
        addr.sin_port=htons(8080);
        addr.sin_addr.s_addr = inet_addr("192.168.0.99");
        int connectResult = connect( _clientSocket, (const struct sockaddr *)&addr, sizeof(addr));
    
        // 发送数据(到服务器)
        /*
         第一个参数指定发送端套接字描述符;
         第二个参数指明一个存放应用程式要发送数据的缓冲区;
         第三个参数指明实际要发送的数据的字符数;
         第四个参数一般置0。
         成功则返回实际传送出去的字符数,失败返回-1,
         */
        char * str = "itcast";
        ssize_t sendLen = send( _clientSocket, str, strlen(str), 0);
    
        // 接送数据(从服务器)
        /*
         第一个参数socket
         第二个参数存放数据的缓冲区
         第三个参数缓冲区长度。
         第四个参数指定调用方式,一般置0
         返回值 接收成功的字符数
         */
        char *buf[1024];
        ssize_t recvLen = recv( _clientSocket, buf, sizeof(buf), 0);
        NSLog(@"---->%ld",recvLen);
        });
    //    [self test];
    }
  • 相关阅读:
    linux 获取外网ip地址
    出现大量rcuob进程
    禁用 ipv6
    centos yum 坏掉 db 损坏
    关于 solusvm
    VMWare 下 Ubuntu 18.04 的文件共享
    安装最新版本 nginx
    大量的Close_wait 发现的 too many open file 错
    Linux安装Desktop 和 vncserver
    MySQL in和limit不能连用的问题
  • 原文地址:https://www.cnblogs.com/dujiahong/p/8142919.html
Copyright © 2020-2023  润新知