socket简单使用

1.初始化socket
// 1.创建一个socket
    /*
     domain: 协议域 IPV4 ,IPV6
     type: socket 类型  SOCKET_STREAM(TCP) / SOCK_DGRAM(UDP)
     protocol: TCP ? UDP ? 0 ,自动根据第二个参数来决定合适的协议
     */
    int cr_Socket = socket(AF_INET, SOCK_STREAM, 0);
2.连接服务器
// 2.连接服务器
    struct sockaddr_in  cr_sever_Addr;
    cr_sever_Addr.sin_family = AF_INET;
    // 端口
    cr_sever_Addr.sin_port = htons(8866);
    // ip地址
    cr_sever_Addr.sin_addr.s_addr = inet_addr("127.0.0.1");
    /*
     参数1:客户端的socket
     参数2:指向数据结构sockaddr_in 的指针,其中包括端口、IP地址
     参数3:结构体数据的长度
     */
    int connectedResult = connect(cr_Socket, (const struct sockaddr * )&cr_sever_Addr, sizeof(cr_sever_Addr));
    if (connectedResult  == 0) {
        NSLog(@"连接成功!");
    } else {
        NSLog(@"连接失败:%d",connectedResult);
    }
    while (connectedResult == 0) {
        //从服务器去接收数据
    }
3.发送数据给服务器
// 3.发送数据给服务器
    /*
     参数1:客户端的socket
     参数2:发送内容的地址
     参数3:发送内容的长度
     参数4:发送方式的标志,一般都0
     */
    NSString *sendMsg = @"Hello word!";
    ssize_t sendLen = send(_cr_Socket, sendMsg.UTF8String, strlen(sendMsg.UTF8String), 0);
    NSLog(@"发送内容是:%@, 共%ld字符",sendMsg, sendLen);
4.从服务器去接收数据
// 4.从服务器去接收数据
    uint8_t buffer[1024];
    /*
     参数1:客户端的socket
     参数2:接收内容的缓存区地址
     参数3:接收内容的长度
     参数4:接收的方式,0,表示阻塞,必须等待服务器返回数据
     返回值:成功:读入的字节数据
     失败:
     */
    ssize_t recvLen =  recv(_cr_Socket, buffer, sizeof(buffer), 0);
    NSData *data = [NSData dataWithBytes:buffer length:recvLen];
    NSString *recStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    NSLog(@"接收了%ld字节数据",recvLen);
    NSLog(@"%@",recStr);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 对象序列化就是把对象转化为字节序列的过程,相对的反序列化就是把字节序列转化为对象的过程,是把对象转化成容易传输的流...
    贼厉害阅读 4,629评论 0 2
  • 一:服务端 ServerSocket ServerSocket包含一个监听来自客户端连接请求的方法:accept(...
    徘徊0_阅读 4,032评论 2 0
  • 关于点击按钮取不到数据,并返回错误信息500.调试方法,将方法全部注释,一个一个调试,并在方法内插入断点;最终将错...
    江江江123阅读 1,696评论 0 0
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,793评论 1 32
  • 说明 本文 翻译自 realpython 网站上的文章教程 Socket Programming in Pytho...
    keelii阅读 6,542评论 0 16