建议:在编写网络程序时,可以直接使用下面这段头文件代码:
|
|
Quick notes
建议:在编写网络程序时,可以直接使用下面这段头文件代码:
|
|
两个应用程序之间的通信,我们可以理解为进程之间的通信,而进程之间进行通信的前提是我们能够找到某个进程,因此,我们需要给进程添加唯一的标示,在本地进程通信中我们可以使用PID来标示一个进程,但PID只在本地唯一,网络中的多个计算机之间的进程标示并不能保证唯一性,冲突的几率很大。
这时候我们需要另辟蹊径,TCP/IP协议族已为我们解决了这个问题,IP层的IP地址可以标示主机,而TCP层协议和端口号可以标示某个主机的某个进程,于是我们采取IP地址+协议+端口号作为唯一标示的这种形式,来确定网络中的一个进程,从而进行进程之间的通讯,这种方式就是我们Socket使用的通讯方式。
在学习Socket通讯之前,首先需要了解网络通讯结构、TCP和UPD,以下是这这两个知识点的简要介绍。
Mac Terminal是自带SSH的,通过终端SSH远程连接Centos服务器非常方便,在端口为默认的22情况下,只需要在终端下输入:
|
|
就可以连接了,如果改变了端口,使用如下命令即可登录:
|
|
如果是Ubuntu主机,也可以这个命令进行连接:
|
|
Charles 是在 Mac 下常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。
Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。
除了在做移动开发中调试端口外,Charles 也可以用于分析第三方应用的通讯协议。配合 Charles 的 SSL 功能,Charles 还可以分析 Https 协议。
Charles 是收费软件,可以免费试用 30 天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过 30 分钟,并且启动时将会有 10 秒种的延时。因此,该付费方案对广大用户还是相当友好的,即使你长期不付费,也能使用完整的软件功能。只是当你需要长时间进行封包调试时,会因为 Charles 强制关闭而遇到影响。
iOS提供的Socket网络编程的接口有CFSocket,BSD Socket,比较著名的第三方库是AsyncSocket。
下面我们用代码来演示如何使用AsyncSocket来创建一个服务器和客户端。
AsyncSocket全名是CocoaAsyncSocket,它的GitHub地址点此访问。AsyncSocket使用CocoaPods安装和拖放安装有所不同。CocoaPods上的版本只有GCDAsyncSocket,GItHub上多了RunloopAsyncSocket,而后者现在已经弃用,建议直接使用CocoaPods安装。
缺点是onsocketWillDisconnect
这个代理方法在GCD的版本里暂时没有,也没有找到替代方法。
下面开始使用AsyncSocket编写服务器端的程序,首先说一下要实现的目的:
下面开始进入正题:
MYSQL 是一个开源的、跨平台关系型数据库管理系统,PHP 是一个开源的、跨平台的脚本语言,PHP 扩展包对MYSQL 支持比较完善,也有比较多开源包供参考, 很多开源项目与 MYSQL 搭配也比较多,因此 PHP+MYSQL 是一套应用极为广泛的方案,下面我们通过代码来了解如何使用 PHP 操作 MYSQL 数据库。
mysqli_connect()
函数打开一个到 MySQL 服务器的新的连接,它的语法如下:
|
|
参数 | 描述 |
---|---|
host | 可选。规定主机名或 IP 地址。 |
username | 可选。规定 MySQL 用户名。 |
password | 可选。规定 MySQL 密码。 |
dbname | 可选。规定默认使用的数据库。 |
port | 可选。规定尝试连接到 MySQL 服务器的端口号。 |
socket | 可选。规定 socket 或要使用的已命名 pipe。 |
它的返回值是一个代表 MySQL 服务器连接的对象。
SQL 是用于访问和处理数据库的标准的计算机语言。
如果需要在网站或 APP 中创建或使用数据库,需要具备以下几点:
RDBMS 指的是关系型数据库管理系统。
RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 MS SQL Server, IBM DB2, Oracle, MySQL 以及 Microsoft Access。
RDBMS 中的数据存储在被称为表(tables)的数据库对象中。
表是相关的数据项的集合,它由列和行组成。
JSON(JavaScript Object Notation)是一种构想设计、轻量级的数据交换语言,以文字为基础,且易于让人阅读。尽管JSON是Javascript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。
JSON用于描述数据结构,有以下形式存在。
{
开始,并以 }
结束。一个对象包含一系列非排序的名称/值对,每个名称/值对之间使用 ,
分区。:
隔开,一般的形式是:
|
|
一个名称是一个字符串; 一个值可以是一个字符串,一个数值,一个对象,一个布尔值,一个有序列表,或者一个null值。
|
|
时间戳主要应用于SQL数据库当中,通过时间戳可以判断数据有没有进行过更新,如果是密钥文件可以在客户端判断密钥有没有过期,可以使用时间戳作为文件或程序的版本号。
使用 time()
即可方便的获得当前的时间,它是从1970年开始计算的毫秒数,因此时间戳转换成当前日期要进行计算。
时间戳也可以转换成当前时间:
|
|
时间戳也可以从指定的时间开始计算:
|
|