原创 C++笔记--Linux网络编程(15)-socket

Posted xiangjai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原创 C++笔记--Linux网络编程(15)-socket相关的知识,希望对你有一定的参考价值。

套接字概念

        Socket本身有“插座”的意思,在Linux环境下,用于表示进程间网络通信的特殊文件类型。本质为内核借助缓冲区形成的伪文件。

        既然是文件,那么理所当然的,我们可以使用文件描述符引用套接字。与管道类似的,Linux系统将其封装成文件的目的是为了统一接口,使得读写套接字和读写文件的操作一致。区别是管道主要应用于本地进程间通信,而套接字多应用于网络进程间数据的传递。

        在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯一标识网络通讯中的一个进程。“IP地址+端口号”就对应一个socket。欲建立连接的两个进程各自有一个socket来标识,那么这两个socket组成的socket pair就唯一标识一个连接。因此可以用Socket来描述网络连接的一对一关系。

套接字通信原理如下图所示

  

        在网络通信中,套接字一定是成对出现的一端的发送缓冲区对应对端的接收缓冲区。我们使用同一个文件描述符索发送缓冲区和接收缓冲区

        TCP/IP协议最早在BSD UNIX上实现,为TCP/IP协议设计的应用层编程接口称为socket API。本章的主要内容是socket API,主要介绍TCP协议的函数接口,最后介绍UDP协议和UNIX Domain Socket的函数接口 

TCP/IP与socket

        通过进程间通信可以实现同一台计算机上不同的进程之间通信

        通过网络编程可以实现在网络中的各个计算机之间的通信

        进程能够使用socket实现和其他进程或者其他计算机通信

        同样的socket既可以实现进程间通信,也可以实现计算机之间通信

        socket是通信端点的抽象。 与文件描述符一样,socket需要使用socket描述符

        socket在Linux上也是通过文件实现的,所以传统的write和read同样适用于socket

        当服务器和应用程序需要和其他进程通信的时候就会使用socket 

        一对对接的socket构成了进程间交流数据的一个通道

 Socket模型创建流程图

以上是关于原创 C++笔记--Linux网络编程(15)-socket的主要内容,如果未能解决你的问题,请参考以下文章

C++笔记--Linux网络编程(15-0)-socket(供自查,文档说明)

原创Array方法笔记

C++笔记--Linux编程(12)-信号

[原创]java WEB学习笔记15:域对象的属性操作(pageContext,request,session,application) 及 请求的重定向和转发

C++笔记--Linux编程(11)-进程通信

C++笔记--Linux编程-linux文件和输入输出 文件和目录操作