1.IP地址:用于唯一地标识网络中一个通信实体(主机、打印机、路由器端口)
(1)表示方式:32位整数,一般分为4个8位二进制数,每8位之间用圆点隔开,每个8位整数可转换为一个0~255的十进制整数 例如:202.9.128.88
(2)分类:
A类:10.0.0.0~10.255.255.255,用于主机数在2^16 ~ 2^24的大型网,A类网最多有127个,一般用于政府机构
B类:172.16.0.0~172.31.255.255,用于主机数在2^8 ~ 2^16的中型网,B类网络最多2^14个,一般用于大中型企业
C类:192.168.0.0~192.168.255.255,用于主机数最多2^8的小型网,C类网络最多2^21个,一般用于个人
D类:224.0.0.0~239.255.255.255,多目地址/“组播”地址
E类:留待将来扩展之用
2.端口号:是应用程序与外界交流的出入口,用于表示数据交给哪个通信程序处理
(1)表示形式:是一个16位整数,可以从0~65535
(2)分类:
公认端口(Well Known Ports):0~1023,紧密绑定一些特定服务
注册端口(Registered Ports):1024~49151,松散绑定一些服务,应用程序通常使用该范围的端口
动态/私有端口(Dynamic/Private Ports):49152~65535,应用程序使用的动态端口
3.TCP/IP通信协议
(1)网络通信协议:是计算机通信中,网络传递、管理信息的一些规范
(2)IP协议:“Internet Protocol”简写,即Internet协议,简称IP协议,也称网间协议,该协议使Internet成为一个允许连接不同类型的计算机和不同操作系统的网络
(3)TCP协议:“Transmission Control Protocol”简写,简称TCP协议,也称传输控制协议;该协议为两台计算机之间建立一个用于发送和接收数据的虚拟链路,并使用重发机制,保证消息可以发送到通信实体,保证通信的可靠性
(4) TCP/IP通信协议:“Transmission Control Protocol/Internet Protocol”简写,是一种可靠的网络协议,它在通信的两端各建立一个通信接口,从而在通信的两端之间形成网络虚拟链路,网络两端的程序可以通过该链路进行通信
4.OSI参考模型:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
5.TCP/IP参考模型:应用层、传输层、网际层、网络接口层
6.了解建立TCP连接的“三次握手”机制
第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1)。此包发送完毕。客户端和服务器端进入ESTABLISHED(建立,确立)状态,完成三次握手
7.传值的4种方式:
(1)属性传值: 一对一
在发送数据类定义属性
在接收数据类里实例化发送数据类的对象
给接收数据类里通过对象给属性赋值
跳转页面
(2)通知中心:
一对多
注册通知的代码必须先于发送通知的代码执行
在发送数据的类中做通知的发送,在接收数据的类中做通知的注册
自定义事件 :注册通知,发送通知
系统事件:不需要发送通知
(3)委托代理 :一对一
协议需要写在发送数据的类中,写在@interface@end之外
(1)在委托类EntrustViewController中自定义协议
@protocol EntrustViewControllerDelegate <NSObject>
-(void)method;
@end
属性要写在@interface@end之间,委托类的代理类必须要实现<>中的协议
(2)在委托类EntrustViewController中定义一个名为delegate的属性
@interface EntrustViewController:UIViewController
@property (nonatomic,assign)id< EntrustViewControllerDelegate>delegate;
@end
调用协议里的方法传值
(3)在代理类myViewController中实现代理协议中的方法
在接收数据的类里遵守协议
设置代理
实现协议的方法
(4) block块 :
一对一
可以嵌套定义
返回值、形参完全相同,名称不同的block函数,可以使用函数名相互赋值
可以做成oc的property属性
(i)在需要传递数据的类.h中(数据发送类)声明属性
(ii)在接收数据的类中做block函数的定义
(iii)在需要传递数据的类中(数据发送类)调用
8.TCP,UDP,HTTP,HTTPS,FTP协议:
(1)TCP/IP是个协议族,可分为三个层次:网络层、传输和应用层
(2)HTTP是应用层协议,其传输都是被包装成TCP协议传输。可以用SOCKET实现HTTP;SOCKET是实现传输层协议的一种编程API,可以是TCP,也可以是UDP
(3)HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议,由SSL+HTTP协议构建的可进行加密传输,身份认证的网络协议,要比HTTP协议安全
(4)TCP——传输控制协议,提供的是面向连接,可靠的字节流服务,通信可靠但须持续连接,连接断开通信中断,网页、远程连接、文件等传输使用此方式
(5)UDP——用户数据协议,一个无连接的简单的面向数据报的运输层协议,用于多点通信和实时的数据业务,比如语音广播、视频、QQ、TFTP(简单文件传送)
(6)FTP——文件传输协议(File Transfer Protocol),是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用层。FTP客户机可以给服务器发出命令文件,创建或改变服务器上的目录。
9.添加工程全局变量pch,多个类或框架中要使用时,可以放入pch中
(1)Supporting Files->cmd+n->other->pch file->勾选工程文件夹->create
(2)#define DataPassNotification @“stringPass”
宏定义或导入头文件,注意宏定义不能有分号
(3)工程->Build Settings->cmd+F->prefix->Apple LLVM->Prefix Header->双击右侧空白处->输入指令“$(SRCROOT)/工程名/pch文件名 ”
//typedef用于重命名类型
typedef int zhengxing;
//OC对象的原理就是结构体,可以使用结构体定义不同类型的变量
//定义一个结构类型 (构造类型:由基本类型构成)
//struct Student{
// char name[100];
// int age;
// double height;
// char address[100];
//};
//
//typedef struct Student myStudent;
//简化写法定义时就重命名
typedef struct Student{
char name[100];
int age;
double height;
char address[100];
}myStudent;
typedef struct Student * myStudentPoint;
int main(int argc, const char * argv[]) {
@autoreleasepool {
//定义struct Student类型的变量stu1,并赋值
struct Student stu1 = {"yinxiaoteng",30,175.5,"北京"};
stu1.age = 32;
printf("%s,%d,%lf,%s",stu1.name,stu1.age,stu1.height,stu1.address );
myStudent stu2;
struct Student *pStu1 = &stu1;
myStudentPoint *pStu2 = &stu2;
}
return 0;
}