c++ asio socket 关闭不了_Linux进程间通信详解(七) socket套接字基础

本文详细介绍了Linux进程间通信中的socket套接字基础知识,包括端口号概念、TCP与UDP传输方式。通过示例程序展示了在Windows环境下TCP和UDP套接字的创建、连接和通信过程,强调了TCP的连接性和UDP的无连接性特点。
摘要由CSDN通过智能技术生成

6be775afeee601e389d9f5d8e279cefd.png

套接字 socket是操作系统内核的一个数据结构,它是网络中节点进行相互通信的门户。网络编程实际上也可以称作套接字编程。

套接字有3种类型:

  • 流式套接字,即TCP套接字,用SOCK_STREAM表示
  • 数据报套接字,即UDP套接字(或称无连接套接字),用SOCK_DGRAM表示
  • 原始套接字,用SOCK_RAM表示

本文主要分析TCP套接字和UDP套接字。

套接字地址结构由网络地址端口号组成,如下图:

598edd5489988581c2162260d67827ee.png

端口号概念

在网络技术中,端口大致有两种意思:一是物理意义上的端口,比如ADSL Modem、集线器、交换机、路由器等用于连接其它网络设备的接口,如RJ-45端口、SC端口等。二是逻辑意义上的端口,一般指TCP/IP协议中的端口,端口范围从0~65535,比如浏览器网页服务(HTTP协议)的80端口,用于FTP服务的21端口等。端口号只有本地意义,即端口号是为了标识本地计算机的各个进程。

端口号分为两类,一类是由因特网指派名字和号码公司ICANN负责分配给一些常用的应用程序固定使用的”周知的端口“,其数值一般为0~1024,如:

400c6e432441ffedd7f0531a0fa6f39a.png

另一类则是一般端口号,用来随时分配给请求通信的客户线程。

TCP传输方式

TCP是一个面向连接的传输层协议,在数据发送之前(即进程通信之前),必须先建立连接。通信完毕后,必须关闭连接。基于TCP传输协议的服务器与客户机间的通信工作流程如下图:

e6222ba2b7a0e08f4dcc5baf18eac546.png

大致流程如下:

  1. 服务器先用socket()函数来建立一个套接字,用这个套接字完成通信的监听及数据的收发。
  2. 服务器用b
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值