iOS网络--socket(2)

一、

        在前面的一节,我们学习了iOS网络相关的知识,并利用scoket搭建了一个简易的响应端(这里我都不好意思称他为服务器端...?️),这一节我们将继续完成客户端的搭建工作。

二、socket搭建客户端

         先来看看搭建客户端的流程:

                               

         上图右边的部分就是搭建TCP客户端的流程了

        1、首先还是创建socket,这里是客户端的socket

//创建socket
    int clientScket = socket(PF_INET, SOCK_STREAM, 0);
    if(clientScket == -1){
        NSLog(@"创建socket失败");
    }else{
        NSLog(@"创建socket成功");
    }

       具体参数已在前一节学习过了,这里就不再赘述。

         2、发起连接

//发起连接
    struct sockaddr_in addr;
    addr.sin_family = AF_INET;//ipv4
    addr.sin_addr.s_addr = inet_addr("127.0.0.1");
    addr.sin_port = htons(1234);//绑定端口号
    int result = connect(clientScket,(const struct sockaddr *)&addr, sizeof(addr));
    if(result == -1){
        NSLog(@"连接出错");
    }else{
        NSLog(@"连接成功");
    }

服务器端的第二步操作是绑定IP地址和端口号,所使用的函数是 bind()函数,而客户端的第二步操作则是连接服务器端,所使用的函数是connect(),参数同客户端的bind()函数参数类型相同,参数意义也相同,需要注意的是这里的IP地址我们写的是本机回环地址,因为是本机利用socket去请求服务端。由于我们在服务端绑定的端口号是 1234,所以这里绑定的端口号也应该是1234。

         3、发送数据

char *msg = "hello world";
ssize_t leng = send(clientScket,msg,strlen(msg),0);
NSLog(@"成功发送%zd字节",leng);

发送数据给客户端,这里使用的也是send()函数,参数依次为 客户端的scoket,发送的数据,数据的长度,0。返回值是 ssize_t类型的值,表示所发送数据的字节数。

           4、接收数据

char buff[1024];
size_t length = recv(clientScket, buff, 1024, 0);
NSLog(@"接收了%zu个字节:%s",length,buff);

接受数据使用recv()函数接收,参数和服务器端的相同,这里不再赘述。

三、最终效果(最终效果需要两个端同时运行??)

服务端:

客户端:

发布了32 篇原创文章 · 获赞 8 · 访问量 9566
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览