这部分我要学习的是Unix下的网络编程,参照的书籍是W. Richard. Stevens的《Unix网络编程》卷一和卷二,由于本身现在从事的工作是java后台开发,对客户端-服务器的这种通信并不陌生。

学习Unix下网络编程开发不是以后要从事这方面工作,是想学一下计算机网络知识,包括其中各种概念的厘清,和熟悉C编程、网络编程。

网络编程说白了很简单,就是两个对象(机器、应用程序)之间相互通信。通信是一个信息交换的过程,像我们人与人之间交流说话就是一种通信过程,因为几乎每天都会与人交流,导致我们都太熟悉了这个过程。

现在要将两台机器之间进行通信的话,需要确定通信的协议。协议是一个大的概念,这里先不去细讲。

可以设想两台机器之间通信是个啥情况:

1. 机器也有语言,最根本的就是使用0-1这种二进制数字了,不管是信息的存储还是指令都是若干二进制字符。不过二进制单位太小,比较方便的还是使用字节。

2. 机器A发送了很多个字节给机器B,B得知道如何解析这段字节

感觉写的太细。。。

客户和服务器通过某个应用协议进行数据交换。

现在Unix网络通信关注的点就在于客户和服务器进行接触的这块。

程序之间相互通信之间首先要确定的是通信协议(protocol)

服务器可以想象成移动营业厅的服务厅,从早上上班到晚上下班开始就一直有人等着有人来,然后给别人提供服务,放到Unix中就是守护进程(daemon)

借用移动营业厅的场景来说,一般都是我们主动去到营业厅,请求别人服务,比如充话费、改套餐等,很少有移动营业厅的人会主动找到我们说提供服务。放到我们这就是一般再设计的时候都是由客户首先发起请求,这样可以简化协议和程序。

但是也有,比如某个月我可能流量超出太多(目前经常这样),会有客服打电话提醒我要不要办理流量加油包,这种操作就是异步回调(asynchronous callback),也就是服务器会向客户发起请求。

最新文章

  1. python中的generator(coroutine)浅析和应用
  2. Java 位运算(移位、位与、或、异或、非)
  3. Android Handler leak 分析及解决办法
  4. [Express] Level 3: Reading from the URL
  5. css实现超出一行后用省略号显示
  6. Windows Phone开发工具初体验【转载】
  7. 关于json.ajax ,php的那点事
  8. asp.net 字符帮助类 类型转换类
  9. 洛谷 P1830 轰炸Ⅲ
  10. 华为s5700 添加与删除vlan
  11. Gym 100917C Constant Ratio 数论+暴力
  12. JAVA基础--IO流
  13. Bin、App_Data等文件夹详述(转自http://blog.csdn.net/zzjiadw/article/details/6801506)
  14. PTA 深入虎穴 (正解)和树的同构
  15. C# GDI+编程之绘图
  16. linux(centos 7)下安装elasticsearch - head插件(端口占用,防火墙关闭)
  17. LeetCode 806 Number of Lines To Write String 解题报告
  18. Nginx作为反向代理服务器
  19. __str__被print函数调用,目的是打印类的内容到屏幕上
  20. Response attachment filename 中文乱码

热门文章

  1. Selenium IDE自动化录制脚本
  2. [CF526G]Spiders Evil Plan
  3. 第八章 android-布局
  4. 如何使用Delphi编写Modbus RTU CRC16的校验码
  5. ASIHTTPRequest学习(一)
  6. Windows查看所有的端口及端口对应的程序
  7. ASP.NET 5基础之中间件
  8. JAVA常见算法题(十三)
  9. Cannot assign requested address 问题
  10. Java算法题:兔子问题