README
前面已经了解了进程间的五种通信方式

管道:通过父子进程进行通信
消息队列:通过内存中的链表进行通信
共享内存:在内核中开辟一块内存空间,是双方都可以使用
信号:A通过B的ID号来进行收发消息
信号量:对这些临界资源进行p、v操作控制

他们的特点是都依赖于内核进行单机内的进程间通信,当然缺点也就很明显了,无法多机通讯。
多机通讯,比如说Linux与Android的通讯、与IOS的通讯、与51单片机的通讯、或者说两个手机之间的通讯等等。
那么机器A如何找到机器B,在网络中就需要用到地址来寻找了,地址包括IP地址端口号两个。IP地址的作用想必大家都明白,一台机器,一部手机,一个设备对应一个IP地址,想要找到对哪一个设备进行操作就要用到IP地址。而端口号的作用是在找到IP之后,比如在一台PC上,有好几个服务,http服务、ftp服务、socket服务等等,那么客户端需要找哪一个呢?就需要用端口号来对接。
通过地址找到对应操作的设备之后,就要进行交流了,即数据交流,数据又涉及到协议,协议又分为http协议TCP协议UDP协议等等。协议说白了就是一种数据格式。比如说单片机和pc机之间要进行通信,就要用到串口协议。
简单说明一下我们在Linux中经常要用到的协议TCP协议和UDP协议。在Linux网络编程入门学习时通常用socket(套接字)进行学习。
socket中TCP协议是面向连接的,设备A与设备B进行连接,就好比两个人打电话,A打给B,B接通以后,两个人再进行交流。可靠。
UDP协议是面向报文的,或者说对于两个人来说,A与B之间的通信是发短信的形式来进行交流。不可靠。
这两者之间的区别为即时性,即A发送消息之后对于B的状态,TCP是两者之间相互建立连接之后进行交流,而UDP中A对于B的状态是不知道的,B有没有收到,或者B收到后有没有看到。所以说可靠不可靠。
那么UDP是否就一无是处呢?并不是,各自有各自的好处,有各自的应用场景,UDP的数据量大,比如说在打视频时用到的UDP,在丢失了几个数据时,无非时视频中的画面出现了一点马赛克之类的东西,影响不大,但是如果需要的信息量很准确,比如说传指令,传111,变成了010,那么影响就非常大了,所以说在精细的操作时我们用到的往往时TCP协议;在需要大量的数据,而且可靠度的要求并不太高,内存响应快数据量大,往往用到UDP协议。

TCP/UDP对比1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前,不需要建立连接。
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达,UDP尽最大努力交付,即不保证可靠交付。
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)。
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信。
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节。
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道。
端口号作用一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等。
这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP地址与网络服务的关系是一对多的关系。
实际上是通过"IP地址+端口号"来区分不同的服务的。
端口提供了一种访问通道,
服务器一般都是通过知名端口号来识别的。例如,对于每个TCP/IP实现来说,FTP服务器的TCP端口号都是21,每个Telnet服务器的TCP端口号都是23,每个TFTP(简单文件传送协议)服务器的UDP端口号都是69。

字节序

字节序是指多字节数据在计算机内存中存储或者在网络传输时各字节的存储顺序。

常见序
1、Little endian (小端字节序):将低序字节存储在起始地址
2、Big endian(大端字节序):将高序字节存储在起始地址。
网络字节序=大端字节序

例子:在内存中双字(32位)0x01020304(DWORD)的存储方式
内存地址:
4000&4001&4002&4003
LE 04 03 02 01
BE 01 02 03 04
Socket服务器和客户端的开发步骤

Linux网络编程(Socket)(一)相关推荐

  1. Linux 网络编程——socket 网络编程

    文章目录 一.网络基础 TCP/UDP对比 TCP/IP协议族体系 socket IP地址 IP地址转化API inet_addr() inet_aton() inet_ntoa() inet_pto ...

  2. Linux网络编程——socket、bind、listen、accpet、connect、read和write

    Linux网络编程 基础理论 1.TCP/UDP/端口号 2.字节序 一.socket服务器与客户端的开发步骤 二.具体使用步骤 1.socket(创建连接协议) 2.bind(地址准备好) 3.li ...

  3. Linux网络编程(Socket)

    目录 网络编程(Socket)概述 引入 网络编程通识扫盲 socket套接字 套接字描述符 字节序 socket编程步骤 Linux提供的API简析 创建套接字即连接协议[socket](服.客) ...

  4. 27.Linux网络编程socket变成 tcp 高并发 线程池 udp

    好,咱们开始上课了,从今天开始咱们连续讲 8 天的,网络编程这个还是在linux环境下去讲,咱们先看一下咱们这 8 天都讲什么东西,跟大家一块来梳理一下,你先有个大概的印象,这些你也不要记,那么网络编 ...

  5. Linux网络编程——socket编程

    一.socket socket 网络套接字一个文件文件描述符指向一个套接字(该套接字内部由内核借助两个缓冲区实现(接收缓冲区和发送缓冲区))通讯过程中,套接字一定是 [成对] 出现的. 二.网络字节序 ...

  6. linux网络编程socket,Linux网络编程入门

    socket又叫做套接字,网络编程又叫做套接字编程.而socket地址也称为套接字地址,可以理解为计算机的网络地址. 1.理解socket地址 假设小明同学想给女神打电话需要知道对方的电话号码才能继续 ...

  7. Linux网络编程 | Socket编程(一):Socket的介绍、UDPSocket的封装、UDP服务器/客户端的实现

    目录 套接字编程 Sockaddr结构 字节序 地址转换 常用套接字接口 UDP的通信流程 UDPSocket的封装 UDP服务器 UDP客户端 套接字编程 所谓套接字(Socket),就是对网络中不 ...

  8. Linux网络编程 | socket选项设定 及 网络信息API

    文章目录 读取和设置 socket 选项 SO_REUSEADDR SO_RCVBUF 和 SO_SNDBUF SO_RCVLOWAT 和 SO_SNDLOWAT SO_LINGER 选项 网络信息A ...

  9. Linux 网络编程socket错误分析

    socket错误码: EINTR: 4 阻塞的操作被取消阻塞的调用打断.如设置了发送接收超时,就会遇到这种错误. 只能针对阻塞模式的socket.读,写阻塞的socket时,-1返回,错误号为INTR ...

  10. [Linux网络编程]Socket套接字

    socket 的原意是"插座",在计算机通信领域,socket 被翻译为"套接字",它是计算机之间进行通信的一种约定或一种方式.     通过 socket 这 ...

最新文章

  1. Face Recognition for the Happy House-v3
  2. Log信息获取调用类和调用方法名的实现原理
  3. apicloud开发目标
  4. 互联网产品发布之灰度发布
  5. anaconda3虚拟环境离线迁移到服务器
  6. 小猿圈Linux 之用户和用户组管理(二)
  7. AI-多云互联,网络通信的“自动驾驶
  8. 椭圆极点极线性质_圆锥曲线(18)———圆锥曲线题目背后的性质总结(1)
  9. hadoop配置集群的心得
  10. 三菱modbusRTU通讯实例_施耐德PLC常见的两种编程通讯控制实例
  11. 台式计算机能分享热点吗,台式机能做wifi热点吗
  12. 杜兰大学计算机专业,杜兰大学计算机科学专业详解
  13. 写在Aras Innovator技术贴 前面
  14. 获取高程数据并生成等高线
  15. Ubuntu之桌面安装及启动级别切换
  16. SessionFactory:使用与配置
  17. 基于UCOS-III的雷电传奇自制小游戏————秉火STM32F103-指南者;PS2手柄
  18. [寻本溯源]“三羊开泰”的典故
  19. VSCODE下载速度慢的问题
  20. Objective C编程基础视频课程-关东升-专题视频课程

热门文章

  1. 北航超算运行matlab,计算性能超50万亿次破纪录,北航荣获ASC19世界大学生超算竞赛最高计算性能奖...
  2. android 4.2 dropbox,android 下用脚本备份文档到dropbox的实现
  3. AssertionError: Torch not compiled with CUDA enabled
  4. 计算机取小数点后的小数 公式,excel表格公式计算后取小数点后的位数 | excle小数个数...
  5. 刨根系列之volatile详解
  6. Power BI 学习三:数据整理和关系管理
  7. Android重力感应器入门介绍
  8. 三星S5P6818移植工程
  9. 计算机房要保持清洁 卫生,国家机房数据安全管理制度
  10. 一文看懂DSP的DMA传输(burst、transfer、wrap)