iOS进阶_Socket(Socket简介代码演练)
网络通讯三要素
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简介代码演练)相关推荐
- iOS进阶 - 包大小:如何从资源和代码层面实现全方位瘦身
iOS进阶 - 包大小:如何从资源和代码层面实现全方位瘦身 官方 App Thinning App Thinning 是由苹果公司推出的一项可以改善 App 下载进程的新技术,主要为了解决用户下载 A ...
- 视频教程-iOS进阶开发-iOS
iOS进阶开发 毕业于解放军特种作战学院,曾就职广州军区司令部.复原后从事IT行业,涉及逆向,安全,密码学等技术领域.2014年在广州某线下教育机构担任iOS讲师,2015年加入潭州教育集团,潭州iO ...
- iOS进阶开发-李文瀚-专题视频课程
iOS进阶开发-817人已学习 课程介绍 进阶课程涵盖目前iOS开发需要提升和深入研究的基础知识.通过原理讲解,深入理解底层机制.课程答疑讲师QQ:471926977 课程收益 ...
- [源码、文档、分享] iOS/iPhone学习系列、代码教程(转)
iOS/iPhone学习系列.代码教程----~~~持续更新中~~~ http://www.devdiv.com/iOS_iPhone-iOS_iPhone%E5%AD%A6%E4%B9%A0%E7% ...
- Socket简介及客户端服务器连接实例
注: 在客户端游戏开发中,使用HTTP进行网络通信的比较少,一般使用的都是Socket进行通信.而HTTP一般用于网页或者网页游戏. [Socket简介] 1.套接字(socket)概念 套接字(s ...
- iOS进阶 - iOS如何监控崩溃
转载自:https://blog.csdn.net/qxuewei/article/details/90760508 iOS进阶 - iOS如何监控崩溃 几种常见的崩溃 数组越界:给数组添加 nil: ...
- IOS基础之打砖块项目演练
IOS基础之打砖块项目演练 本项目涉及CADisplayLink核心动画,各个控件的使用,运行循环,逻辑判断等,if和for,frame坐标的改变,CGPoint结构体,成员变量的赋值,两种手势,拖拽 ...
- Swift5.x的UITableView纯代码演练
Swift5.x的UITableView纯代码演练 // // ViewController.swift // 1-UITableView演练 // Created by 鲁军 on 2021/3/1 ...
- socket简介和udp网络程序-发送、接收数据
socket简介 不同电脑上的进程之间如何通信 首要解决的问题是如何唯一标识一个进程,否则通信无从谈起! 在1台电脑上可以通过进程号(PID)来唯一标识一个进程,但是在网络中这是行不通的. 其实TCP ...
最新文章
- c# 拷贝结构体_C#学习之Partial、结构体、枚举
- 3-2 文件夹类Directory的常用方法(2)
- 更换ubuntu的root的默认python版本
- 设计法则 - 菲茨定律 (转)
- 谈谈软件工程与计算机科学的区别
- java根据所给的根目录获取底下所有文件夹结构
- 三种方法,让WPF项目生成单文件
- php 苹果内购支付
- msm8996平台的 camera 框架笔记
- 程序员接私活的6个网站,你有技术就有钱!
- 如何解决Access操作或事件已被禁用模式阻止
- 什么是微信公众号矩阵模式?
- 深入理解安卓异步任务AsyncTask
- 路由器wan口ip地址_如何在没有浏览器的情况下查找外部或WAN IP地址?
- osg for android 学习之五:场景漫游
- Oracle19c数据库服务
- new Date() 日期格式的转换
- 【机器学习】层次聚类算法 CURE算法
- 下载免费的中文字体及生成jsPDF需要的js文件
- 电大计算机应用基础形考任务4答案,最新国家开放大学电大《电工电子技术》形考任务4试题及答案.doc...
热门文章
- ServletContext 对象
- python pyppeteer自定义chromium目录
- sdut 1466 双向队列
- cart2pol函数
- 我的世界java8_《我的世界》java8 64服务器mod
- boostrap 鼠标滚轮滑动图片_Bootstrap幻灯片轮播图支持触屏左右手势滑动的实现方法...
- jQuery的Ajax初识
- Windows下载Android源代码
- 转:图解C#的值类型,引用类型,栈,堆,ref,out
- [Cocos2d-x For WP8]DrawPrimitives画图