Tian'notes

Quick notes


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

iOS Socket通讯 - Socket编程头文件

发表于 2015-09-18   |   分类于 网络通讯   |  

建议:在编写网络程序时,可以直接使用下面这段头文件代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
include <unistd.h>
include <sys/types.h>
include <sys/socket.h>
include <netdb.h>
include <stdio.h>
include <stdlib.h>
include <string.h>
include <ctype.h>
include <errno.h>
include <malloc.h>
include <netinet/in.h>
include <arpa/inet.h>
include <sys/ioctl.h>
include <stdarg.h>
include <fcntl.h>
include <fcntl.h>
阅读全文 »

网络通讯结构 - OSI&TCP/IP

发表于 2015-09-14   |   分类于 网络通讯   |  

两个应用程序之间的通信,我们可以理解为进程之间的通信,而进程之间进行通信的前提是我们能够找到某个进程,因此,我们需要给进程添加唯一的标示,在本地进程通信中我们可以使用PID来标示一个进程,但PID只在本地唯一,网络中的多个计算机之间的进程标示并不能保证唯一性,冲突的几率很大。

这时候我们需要另辟蹊径,TCP/IP协议族已为我们解决了这个问题,IP层的IP地址可以标示主机,而TCP层协议和端口号可以标示某个主机的某个进程,于是我们采取IP地址+协议+端口号作为唯一标示的这种形式,来确定网络中的一个进程,从而进行进程之间的通讯,这种方式就是我们Socket使用的通讯方式。

在学习Socket通讯之前,首先需要了解网络通讯结构、TCP和UPD,以下是这这两个知识点的简要介绍。

阅读全文 »

Mac开发工具 - SHH登录

发表于 2015-08-24   |   分类于 Other   |  

Mac Terminal是自带SSH的,通过终端SSH远程连接Centos服务器非常方便,在端口为默认的22情况下,只需要在终端下输入:

1
ssh -l root hostNameOrAddress

就可以连接了,如果改变了端口,使用如下命令即可登录:

1
ssh -p portNumber -l root hostNameOrAddress

如果是Ubuntu主机,也可以这个命令进行连接:

1
2
ssh -X userName@hostNameOrAddress
ssh userName@hostNameOrAddress -p portNumber
阅读全文 »

Mac抓包 - 转载·Charles从入门到精通

发表于 2015-08-20   |   分类于 网络通讯   |  

Charles 是在 Mac 下常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。

Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。

除了在做移动开发中调试端口外,Charles 也可以用于分析第三方应用的通讯协议。配合 Charles 的 SSL 功能,Charles 还可以分析 Https 协议。

Charles 是收费软件,可以免费试用 30 天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过 30 分钟,并且启动时将会有 10 秒种的延时。因此,该付费方案对广大用户还是相当友好的,即使你长期不付费,也能使用完整的软件功能。只是当你需要长时间进行封包调试时,会因为 Charles 强制关闭而遇到影响。

阅读全文 »

iOS Socket通讯 - Socket C/S实例

发表于 2015-08-18   |   分类于 网络通讯   |  

iOS提供的Socket网络编程的接口有CFSocket,BSD Socket,比较著名的第三方库是AsyncSocket。

  • BSD Socket 是UNIX系统中通用的网络接口,它不仅支持各种不同的网络类型,而且也是一种内部进程之间的通信机制。而iOS系统其实本质就是UNIX,所以可以用,但是比较复杂。
  • CFSocket 是苹果提供给我们的使用Socket的方式。
  • AsyncSocket 是一个应用比较广泛的开源库。

下面我们用代码来演示如何使用AsyncSocket来创建一个服务器和客户端。

AsyncSocket全名是CocoaAsyncSocket,它的GitHub地址点此访问。AsyncSocket使用CocoaPods安装和拖放安装有所不同。CocoaPods上的版本只有GCDAsyncSocket,GItHub上多了RunloopAsyncSocket,而后者现在已经弃用,建议直接使用CocoaPods安装。

缺点是onsocketWillDisconnect这个代理方法在GCD的版本里暂时没有,也没有找到替代方法。

下面开始使用AsyncSocket编写服务器端的程序,首先说一下要实现的目的:

  1. 用户输入昵称,将昵称发送给服务器,服务器返回在线名单;
  2. 客户端收到在线名单,利用在线名单生成联系人列表;
  3. 点击联系人列表,用户和服务器进行对话;

下面开始进入正题:

阅读全文 »

PHP数据操作 - MYSQL

发表于 2015-08-17   |   分类于 PHP   |  

MYSQL 是一个开源的、跨平台关系型数据库管理系统,PHP 是一个开源的、跨平台的脚本语言,PHP 扩展包对MYSQL 支持比较完善,也有比较多开源包供参考, 很多开源项目与 MYSQL 搭配也比较多,因此 PHP+MYSQL 是一套应用极为广泛的方案,下面我们通过代码来了解如何使用 PHP 操作 MYSQL 数据库。

连接数据库服务器

mysqli_connect() 函数打开一个到 MySQL 服务器的新的连接,它的语法如下:

1
mysqli_connect(host,username,password,dbname,port,socket);
参数 描述
host 可选。规定主机名或 IP 地址。
username 可选。规定 MySQL 用户名。
password 可选。规定 MySQL 密码。
dbname 可选。规定默认使用的数据库。
port 可选。规定尝试连接到 MySQL 服务器的端口号。
socket 可选。规定 socket 或要使用的已命名 pipe。

它的返回值是一个代表 MySQL 服务器连接的对象。

阅读全文 »

MYSQL入门 - 基础语法

发表于 2015-08-17   |   分类于 SQL   |  

SQL 是用于访问和处理数据库的标准的计算机语言。

如果需要在网站或 APP 中创建或使用数据库,需要具备以下几点:

  • RDBMS 数据库程序(比如 MS Access, SQL Server, MySQL)
  • 服务器端脚本语言(比如 PHP 或 ASP)
  • SQL
  • HTML / CSS

RDBMS 指的是关系型数据库管理系统。

RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 MS SQL Server, IBM DB2, Oracle, MySQL 以及 Microsoft Access。

RDBMS 中的数据存储在被称为表(tables)的数据库对象中。

表是相关的数据项的集合,它由列和行组成。

阅读全文 »

PHP数据操作 - JSON

发表于 2015-08-13   |   分类于 PHP   |  

JSON(JavaScript Object Notation)是一种构想设计、轻量级的数据交换语言,以文字为基础,且易于让人阅读。尽管JSON是Javascript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。

JSON用于描述数据结构,有以下形式存在。

  • 对象(object):一个对象以 { 开始,并以 } 结束。一个对象包含一系列非排序的名称/值对,每个名称/值对之间使用 , 分区。
  • 名称/值(collection):名称和值之间使用 : 隔开,一般的形式是:
1
{name:value}

一个名称是一个字符串; 一个值可以是一个字符串,一个数值,一个对象,一个布尔值,一个有序列表,或者一个null值。

  • 值的有序列表(Array):一个或者多个值用“,”分区后,使用“[”,“]”括起来就形成了这样的列表,形如:
1
[collection, collection]
  • 字符串:以””括起来的一串字符。
  • 数值:一系列0-9的数字组合,可以为负数或者小数。还可以用“e”或者“E”表示为指数形式。
  • 布尔值:表示为true或者false。
阅读全文 »

PHP入门 - 面向对象

发表于 2015-08-12   |   分类于 PHP   |  

类的声明

1
2
3
4
5
6
class Hello {
public function sayello() {
echo 'Hello PHP';
}
}

类的实例化

1
$h = new Hello();
阅读全文 »

PHP入门 - 时间和日期

发表于 2015-08-12   |   分类于 PHP   |  

时间戳主要应用于SQL数据库当中,通过时间戳可以判断数据有没有进行过更新,如果是密钥文件可以在客户端判断密钥有没有过期,可以使用时间戳作为文件或程序的版本号。

使用 time() 即可方便的获得当前的时间,它是从1970年开始计算的毫秒数,因此时间戳转换成当前日期要进行计算。

时间戳也可以转换成当前时间:

1
echo date('Y - m - d A h:i:s ',time()).'<br>';

时间戳也可以从指定的时间开始计算:

1
echo date('Y - m - d A h:i:s ','10000').'<br>';
阅读全文 »
1…6789
Tian

Tian

不积跬步,无以至千里。
不积小流,无以成江海。

83 日志
17 分类
82 标签
RSS
GitHub Weibo
© 2017 Tian
由 Hexo 强力驱动
主题 - NexT.Pisces