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

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

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

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

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

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

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

感觉写的太细。。。

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

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

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

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

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

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

Unix下网络编程概述的更多相关文章

  1. Android网络编程概述

    Android网络编程概述 首先,应该了解的几个问题: 1)Android平台网络相关API接口 a) java.net.*(标准Java接口) java.net.*提供与联网有关的类,包括流.数据包 ...

  2. unix下网络编程之I/O复用(三)

    poll函数 在上文unix下网络编程之I/O复用(二)中已经介绍了select函数的相关使用,本文将介绍另一个常用的I/O复用函数poll.poll提供的功能与select类似,不过在处理流设备时, ...

  3. Windows Embedded Compact 7网络编程概述(下)

    11.1.1 Select I/O模型 在Windows CE中,Select模型是唯一被支持的I/O模型.Select I/O模型就是利用select函数对I/O进行管理. 函数select的功能在 ...

  4. 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 ...

  5. JAVA学习第五十九课 — 网络编程概述

    网络模型 OSI(Open System Interconnection)开放系统互连:參考模型 TCP/IP 网络通讯要素 IP地址 port号 传输协议 网络參考模型 七层OSI模型的基本概念要了 ...

  6. Linux环境下网络编程杂谈《转》

    今天我们说说“Pre-网络编程”.内容比较杂,但都是在做网络应用程序开发过程中经常要遇到的问题. 一.大端.小端和网络字节序 小端字节序:little-endian,将低字节存放在内存的起始地址: 大 ...

  7. Windows Embedded Compact 7网络编程概述(上)

    如今,不论是嵌入式设备.PDA还是智能手机,网络都是必不可少的模块.网络使人们更方便地共享设备上的信息和资源.而且,利用智能手机浏览互联网,也逐渐成为生活中的常见手段.物联网所倡导的物物相联,也离不开 ...

  8. linux下网络编程学习——入门实例ZZ

    http://www.cppblog.com/cuijixin/archive/2008/03/14/44480.html 是不是还对用c怎么实现网络编程感到神秘莫测阿,我们这里就要撕开它神秘的面纱, ...

  9. UNIX/Linux网络编程基础:图解TCP/IP协议栈

    目录 1.主机到网络层协议:以太网协议 2.IP协议 3.网际控制报文协议(ICMP) 4.传输控制协议(TCP) 5.用户数据报文协议(UDP) 6.流控制传输协议(SCTP) 7.地址解析协议(A ...

随机推荐

  1. 离别在须臾——AFO

    始于 2016-12-25 终于 2017-11-30 一开始就陷入了颓废的坑,然后,直至 2017 年暑假,颓废的气息一发不可收拾, 从 Q_fight 到 aoqi_baitian ,从 大主宰 ...

  2. 洛谷——P2118 比例简化

    P2118 比例简化 题目描述 在社交媒体上,经常会看到针对某一个观点同意与否的民意调查以及结果.例如,对某一观点表示支持的有1498 人,反对的有 902人,那么赞同与反对的比例可以简单的记为149 ...

  3. linux命令详解:tr命令

    转:http://www.cnblogs.com/lwgdream/archive/2013/11/05/3407809.html 前言 通过tr命令来转化数据,比如大小写的转换:用转换成另外一种字符 ...

  4. DOM系统学习-基础

    DOM介绍  DOM介绍: D 网页文档 O 对象,可以调用属性和方法 M 网页文档的树型结构  节点: DOM将树型结构理解为由节点组成.     节点种类: 元素节点.文本节点.属性节点等 查找元 ...

  5. C和C++中函数运行时间测试

    //clock()函数为c中,捕捉从程序开始运行到clock运行的时间//时间单位为clock tick,即为时钟打点#include<iostream>#include<cmath ...

  6. Windows下cwRsyncServer双机连续同步部署

    下载cwRsyncServer服务器端与客户端的安装文件:服务端下载:cwRsyncServer_4.0.5_Installer.zip客户端下载:cwRsync_4.0.5_Installer.zi ...

  7. 拉格朗日对偶与kkt条件

  8. Java 中 ConcurrentHashMap 原理分析

    一.Java并发基础 当一个对象或变量可以被多个线程共享的时候,就有可能使得程序的逻辑出现问题. 在一个对象中有一个变量i=0,有两个线程A,B都想对i加1,这个时候便有问题显现出来,关键就是对i加1 ...

  9. LINQ获取两个List的交集

    1.调用: UserList = UserList.ToList().Intersect(userIDList, new MyUserComparer()).AsQueryable(); 2.须要重写 ...

  10. 解决svn锁定

    问题:今天去公司 svn-update的时候,报错svn:E155004,提示说什么locked 解决:svn cleanup解除锁定,然后就可以操作了. 原因:SVN 本地更新时,由于一些操作中断更 ...