Unix下网络编程概述
这部分我要学习的是Unix下的网络编程,参照的书籍是W. Richard. Stevens的《Unix网络编程》卷一和卷二,由于本身现在从事的工作是java后台开发,对客户端-服务器的这种通信并不陌生。
学习Unix下网络编程开发不是以后要从事这方面工作,是想学一下计算机网络知识,包括其中各种概念的厘清,和熟悉C编程、网络编程。
网络编程说白了很简单,就是两个对象(机器、应用程序)之间相互通信。通信是一个信息交换的过程,像我们人与人之间交流说话就是一种通信过程,因为几乎每天都会与人交流,导致我们都太熟悉了这个过程。
现在要将两台机器之间进行通信的话,需要确定通信的协议。协议是一个大的概念,这里先不去细讲。
可以设想两台机器之间通信是个啥情况:
1. 机器也有语言,最根本的就是使用0-1这种二进制数字了,不管是信息的存储还是指令都是若干二进制字符。不过二进制单位太小,比较方便的还是使用字节。
2. 机器A发送了很多个字节给机器B,B得知道如何解析这段字节
感觉写的太细。。。
客户和服务器通过某个应用协议进行数据交换。
现在Unix网络通信关注的点就在于客户和服务器进行接触的这块。
程序之间相互通信之间首先要确定的是通信协议(protocol)。
服务器可以想象成移动营业厅的服务厅,从早上上班到晚上下班开始就一直有人等着有人来,然后给别人提供服务,放到Unix中就是守护进程(daemon)。
借用移动营业厅的场景来说,一般都是我们主动去到营业厅,请求别人服务,比如充话费、改套餐等,很少有移动营业厅的人会主动找到我们说提供服务。放到我们这就是一般再设计的时候都是由客户首先发起请求,这样可以简化协议和程序。
但是也有,比如某个月我可能流量超出太多(目前经常这样),会有客服打电话提醒我要不要办理流量加油包,这种操作就是异步回调(asynchronous callback),也就是服务器会向客户发起请求。
Unix下网络编程概述的更多相关文章
- Android网络编程概述
Android网络编程概述 首先,应该了解的几个问题: 1)Android平台网络相关API接口 a) java.net.*(标准Java接口) java.net.*提供与联网有关的类,包括流.数据包 ...
- unix下网络编程之I/O复用(三)
poll函数 在上文unix下网络编程之I/O复用(二)中已经介绍了select函数的相关使用,本文将介绍另一个常用的I/O复用函数poll.poll提供的功能与select类似,不过在处理流设备时, ...
- Windows Embedded Compact 7网络编程概述(下)
11.1.1 Select I/O模型 在Windows CE中,Select模型是唯一被支持的I/O模型.Select I/O模型就是利用select函数对I/O进行管理. 函数select的功能在 ...
- unix下网络编程之I/O复用(一)
什么是I/O复用? What we need is the capability to tell the kernel that we want to be notified if one or mo ...
- JAVA学习第五十九课 — 网络编程概述
网络模型 OSI(Open System Interconnection)开放系统互连:參考模型 TCP/IP 网络通讯要素 IP地址 port号 传输协议 网络參考模型 七层OSI模型的基本概念要了 ...
- Linux环境下网络编程杂谈《转》
今天我们说说“Pre-网络编程”.内容比较杂,但都是在做网络应用程序开发过程中经常要遇到的问题. 一.大端.小端和网络字节序 小端字节序:little-endian,将低字节存放在内存的起始地址: 大 ...
- Windows Embedded Compact 7网络编程概述(上)
如今,不论是嵌入式设备.PDA还是智能手机,网络都是必不可少的模块.网络使人们更方便地共享设备上的信息和资源.而且,利用智能手机浏览互联网,也逐渐成为生活中的常见手段.物联网所倡导的物物相联,也离不开 ...
- linux下网络编程学习——入门实例ZZ
http://www.cppblog.com/cuijixin/archive/2008/03/14/44480.html 是不是还对用c怎么实现网络编程感到神秘莫测阿,我们这里就要撕开它神秘的面纱, ...
- UNIX/Linux网络编程基础:图解TCP/IP协议栈
目录 1.主机到网络层协议:以太网协议 2.IP协议 3.网际控制报文协议(ICMP) 4.传输控制协议(TCP) 5.用户数据报文协议(UDP) 6.流控制传输协议(SCTP) 7.地址解析协议(A ...
随机推荐
- Request Header Or Cookie Too Large
运营反馈 Nginx 报 400 错误,具体点说:Request Header Or Cookie Too Large.其实随便搜搜就知道可以通过加大 client_header_buffer_siz ...
- Chrome的Waterfall
参考: 1.https://developers.google.com/web/tools/chrome-devtools/network-performance/reference#timing 2 ...
- 码云的GIT操作
git操作 git initgit add .git commit -m ""git remote add origin https://git.coding.net/jessei ...
- Node.js 使用jQuery取得Nodejs http服务端返回的JSON数组示例
server.js代码: // 内置http模块,提供了http服务器和客户端功能(path模块也是内置模块,而mime是附加模块) var http=require("http" ...
- 在web目录下 批量寻找配置文件信息
dir /s /b *.php *.inc *.conf *.config >>list.txt" W4 I2 U+ N/ B6 K @0 r r8 ^ T00LS: _$ j! ...
- Java 分支结构 - if...else/switch
Java 分支结构 - if...else/switch 顺序结构只能顺序执行,不能进行判断和选择,因此需要分支结构. Java 有两种分支结构: if 语句 switch 语句 if 语句 一个 i ...
- SQL JOB 调用 SSIS package 权限问题
来自: http://www.cnblogs.com/sodacc/archive/2012/11/26/2789135.html 第一次用SQL给SSIS包排JOB的时候,都会遇到这样一个问题:单独 ...
- Android学习(十一) File文件操作
File类 1.获取当前应用程序的目录: this.getFilesDir(); //获取当前应用程序的数据目录 ...
- Python——五分钟理解元类(metaclasses)
“元类的魔幻变化比 99% 的用户所担心的更多,当你搞不懂是否真的需要用它的时候,就是不需要.” —Tim Peters 本文源于在 PyCon UK 2008 上的一个快速演讲. 元类被称为 Pyt ...
- 解决zabbix“ZBX_NOTSUPPORTED: Timeout while executing a shell script”报错
如题所示,在zabbix_server使用zabbix_get获取自定义“UserParameter”对应的脚本的数据时,出现了如题所示的报错信息 [root@nmp01 scripts]# /usr ...