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连接的“三次握手”机制

  1. 第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认

  2. 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态

  3. 第三次握手:客户端收到服务器的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;

}