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];
}
原文地址:https://www.cnblogs.com/dujiahong/p/8142919.html