网络通讯三要素

TCP & UDP

三次握手

断开连接的四次握手

Socket套接字

了解了上面的概念,我们开始演练一下Socket

#import "ViewController.h"
#import <sys/socket.h>
#import <netinet/in.h>
#import <arpa/inet.h>@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];[self socketDemo];
}#pragma mark - <socket演练>
-(void)socketDemo{//1.创建socket/**参数domain:    协议域,AF_INET -> IPV4type:      Socket 类型,SOCK_STREAM/SOCK_DGRAMprotocol: IPPROTO_TCP,如果传入0 那么会自动根据第二个参数选择合适的协议返回值socket*/int clientSocket = socket(AF_INET, SOCK_STREAM, 0);//2.连接到服务器/**参数1> 客户端socket2> 指向数据结构sockaddr的指针,其中包括目的端口和IP地址3> 结构体数据长度返回值0 成功/其他 错误代号*/struct sockaddr_in severAddr;severAddr.sin_family = AF_INET;//协议域//端口severAddr.sin_port = htons(80);//地址severAddr.sin_addr.s_addr = inet_addr("127.0.0.1");int connResult =  connect(clientSocket, (const struct sockaddr *)&severAddr, sizeof(severAddr));if (connResult == 0) {NSLog(@"连接成功!!");}else{NSLog(@"失败了 %d",connResult);return;}//3.发送数据给服务器/**参数1> 客户端socket2> 发送内容地址3> 发送内容长度4> 发送方式标志,一般为0返回值如果成功,则返回发送的字节数,失败则返回SOCKET_ERROR*/NSString * sendMsg =@"Hello你好,约嘛";ssize_t sendLen = send(clientSocket, sendMsg.UTF8String, strlen(sendMsg.UTF8String), 0);NSLog(@"发送了%ld个字节",sendLen);//4.从服务器接受数据/**参数1> 客户端socket2> 接收内容缓冲区地址3> 接收内容缓存区长度4> 接收方式,0表示阻塞,必须等待服务器返回数据返回值如果成功,则返回读入的字节数,失败则返回SOCKET_ERROR*/uint8_t buffer[1024];//要把空间准备出来!
ssize_t recvLen = recv(clientSocket, buffer, sizeof(buffer), 0);NSLog(@"接收到了%ld个字节",recvLen);//5.关闭socket连接
    close(clientSocket);
}@end 

转载于:https://www.cnblogs.com/Free-Thinker/p/10437205.html

iOS进阶_Socket(Socket简介代码演练)相关推荐

  1. iOS进阶 - 包大小:如何从资源和代码层面实现全方位瘦身

    iOS进阶 - 包大小:如何从资源和代码层面实现全方位瘦身 官方 App Thinning App Thinning 是由苹果公司推出的一项可以改善 App 下载进程的新技术,主要为了解决用户下载 A ...

  2. 视频教程-iOS进阶开发-iOS

    iOS进阶开发 毕业于解放军特种作战学院,曾就职广州军区司令部.复原后从事IT行业,涉及逆向,安全,密码学等技术领域.2014年在广州某线下教育机构担任iOS讲师,2015年加入潭州教育集团,潭州iO ...

  3. iOS进阶开发-李文瀚-专题视频课程

    iOS进阶开发-817人已学习 课程介绍         进阶课程涵盖目前iOS开发需要提升和深入研究的基础知识.通过原理讲解,深入理解底层机制.课程答疑讲师QQ:471926977 课程收益     ...

  4. [源码、文档、分享] iOS/iPhone学习系列、代码教程(转)

    iOS/iPhone学习系列.代码教程----~~~持续更新中~~~ http://www.devdiv.com/iOS_iPhone-iOS_iPhone%E5%AD%A6%E4%B9%A0%E7% ...

  5. Socket简介及客户端服务器连接实例

    注:  在客户端游戏开发中,使用HTTP进行网络通信的比较少,一般使用的都是Socket进行通信.而HTTP一般用于网页或者网页游戏. [Socket简介] 1.套接字(socket)概念 套接字(s ...

  6. iOS进阶 - iOS如何监控崩溃

    转载自:https://blog.csdn.net/qxuewei/article/details/90760508 iOS进阶 - iOS如何监控崩溃 几种常见的崩溃 数组越界:给数组添加 nil: ...

  7. IOS基础之打砖块项目演练

    IOS基础之打砖块项目演练 本项目涉及CADisplayLink核心动画,各个控件的使用,运行循环,逻辑判断等,if和for,frame坐标的改变,CGPoint结构体,成员变量的赋值,两种手势,拖拽 ...

  8. Swift5.x的UITableView纯代码演练

    Swift5.x的UITableView纯代码演练 // // ViewController.swift // 1-UITableView演练 // Created by 鲁军 on 2021/3/1 ...

  9. socket简介和udp网络程序-发送、接收数据

    socket简介 不同电脑上的进程之间如何通信 首要解决的问题是如何唯一标识一个进程,否则通信无从谈起! 在1台电脑上可以通过进程号(PID)来唯一标识一个进程,但是在网络中这是行不通的. 其实TCP ...

最新文章

  1. c# 拷贝结构体_C#学习之Partial、结构体、枚举
  2. 3-2 文件夹类Directory的常用方法(2)
  3. 更换ubuntu的root的默认python版本
  4. 设计法则 - 菲茨定律 (转)
  5. 谈谈软件工程与计算机科学的区别
  6. java根据所给的根目录获取底下所有文件夹结构
  7. 三种方法,让WPF项目生成单文件
  8. php 苹果内购支付
  9. msm8996平台的 camera 框架笔记
  10. 程序员接私活的6个网站,你有技术就有钱!
  11. 如何解决Access操作或事件已被禁用模式阻止
  12. 什么是微信公众号矩阵模式?
  13. 深入理解安卓异步任务AsyncTask
  14. 路由器wan口ip地址_如何在没有浏览器的情况下查找外部或WAN IP地址?
  15. osg for android 学习之五:场景漫游
  16. Oracle19c数据库服务
  17. new Date() 日期格式的转换
  18. 【机器学习】层次聚类算法 CURE算法
  19. 下载免费的中文字体及生成jsPDF需要的js文件
  20. 电大计算机应用基础形考任务4答案,最新国家开放大学电大《电工电子技术》形考任务4试题及答案.doc...

热门文章

  1. ServletContext 对象
  2. python pyppeteer自定义chromium目录
  3. sdut 1466 双向队列
  4. cart2pol函数
  5. 我的世界java8_《我的世界》java8 64服务器mod
  6. boostrap 鼠标滚轮滑动图片_Bootstrap幻灯片轮播图支持触屏左右手势滑动的实现方法...
  7. jQuery的Ajax初识
  8. Windows下载Android源代码
  9. 转:图解C#的值类型,引用类型,栈,堆,ref,out
  10. [Cocos2d-x For WP8]DrawPrimitives画图