当某个应用进程启动 系统调用 时,控制权就从应用进程传递给了系统调用接口。

此接口再将控制权传递给计算机的操作系统。操作系统将此调用转给某个内部过程,并执行所请求的操作。

内部过程一旦执行完毕,控制权就又通过系统调用接口返回给应用进程。

系统调用接口 实际上就是应用进程的控制权和操作系统的控制权进行转换的一个接口,即 应用编程接口 API (Application Programming Interface)。

关于TCP/IP协议最著名的API就是BerkeleyUNIX 操作系统定义的 套接字接口 (socketinterface)。微软公司在其操作系统中采用了套接字接口 API,形成了一个稍有不同的 API,并称之为 Windows Socket。

请注意,在套接字以上的进程是受应用程序控制的,而在套接字以下的运输层协议软件则是受计算机操作系统的控制。因此,只要应用程序使用TCP/IP协议进行通信,它就必须通过套接字与操作系统交互并请求其服务。

当应用进程需要使用网络进行通信时就发出系统调用,请求操作系统为其创建“套接字”,以便把网络通信所需要的系统资源分配给该应用进程。

操作系统为这些资源的总和用一个叫做套 接字描述符 的号码来表示,并把此号码返回给应用进程。应用进程所进行的网络操作都必须使用这个号码。

通信完毕后,应用进程通过一个关闭套接字的系统调用通知操作系统回收与该“号码”相关的所有资源。

下图描述了操作系统所创建的套接字描述符与套接字数据结构的关系:

由于在一个机器中可能同时出现多个套接字,因此需要一个存放套接字描述符的表,而每一个套接字描述符有一个指针指向存放套接字的地址。

当套接字被创建后,它的端口号和 IP 地址都是空的,因此应用进程要调用 bind(绑定)来指明套接字的本地地址。在服务器端调用 bind 时就是把熟知端口号和本地IP地址填写到已创建的套接字中。这就叫做 把本地地址绑定到套接字

服务器在调用 bind 后,还必须调用listen(收听)把套接字设置为 被动方式 ,以便随时接受客户的服务请求。UDP服务器由于只提供无连接服务,不使用 listen 系统调用。

服务器紧接着就调用 accept(接受),以便把远地客户进程发来的连接请求提取出来。系统调用 accept 的一个变量就是要指明从哪一个套接字发起的连接。

https://blog.csdn.net/shang_0122/article/details/104273944?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164516566216780261952215%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=164516566216780261952215&biz_id=0&a 网络 套接字 介绍 套接字 介绍定义跨 网络 的主机间通讯 套接字 位置 套接字 常用概念客户/服务器程序的 套接字 函数 套接字 相关的系统调示例 1示例2服务器端 tcpserver.py服务器端 tcpclient.py 套接字 介绍 网络 套接字 (英语:Network socket ;又译 网络 套接字 网络 接口、 网络 插槽)在 计算机 科学中是 计算机网络 中行程间数据流的端点。使用以网际协议(Internet Protocol)为通... 应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要 通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多 计算机 操作系统为应用程序与TCP/IP协议交互提供了称为 套接字 ( Socket )的接口,区分不同应用程序进程间的 网络 通信和连接。 生成 套接字 ,主要有3个参数:通信的目的IP地址、使用的传输 ... 流 套接字 提供了一种可靠的、面向连接的服务,比如TCP协议就是基于流 套接字 实现的。数据报 套接字 则提供了一种不可靠的、无连接的服务,比如UDP协议就是基于数据报 套接字 实现的。 套接字 实际上是一个抽象的概念,它代表了 网络 通信中的一个端点,包括了一个IP地址和一个端口号。在 网络 编程中,程序员可以使用 套接字 提供的接口进行 网络 通信,比如创建 套接字 、绑定 套接字 到本地地址、连接远程主机、发送和接收数据等。 套接字 还可以设置一些参数,比如超时时间、缓冲区大小等,以控制 网络 通信的行为。 Socket 翻译过来中文含义有(电源)插座;(电器)插口, 插孔等含义, 也就是说在电源领域, 我们将 Socket 称之为插座, 在电器领域, 我们将 Socket 称之为插孔, 那我们是不是就可以理解为在 计算机 通信领域, 担任插座或者插孔这个含义的 Socket 就定义成了 套接字 呢? 网络 套接字 又叫网际插座,在英文中是Internet Socket 。在 网络 中, 套接字 扮演的角色正如插座一样,它是一个端点,可以与 网络 中的其它 套接字 建立连接。微软 计算机 辞典对于 套接字 给出的解释如下: Socket is an identifier for a particular service on a particular node on a network. The socket consis Private Sub Check2_Click() '设置下划线字体 If Check2.Value = 1 Then TxtSend.FontUnderline = True TxtSend.FontUnderline = False End If End Sub Private Sub Check3_Click() '设置斜体字体 If Check3.Value = 1 Then TxtSend.FontItalic = True TxtSend.FontItalic = False End If End Sub Private Sub Check4_Click() '设置字体大小为18榜 If Check4.Value = 1 Then TxtSend.FontSize = 18 TxtSend.FontSize = 10 End If End Sub Private Sub Form_Load() Combo1.Text = TxtSend.Font.Name ‘设置下拉框,选择更多的字体 Dim i As Integer For i = 0 To Screen.FontCount - 1 Combo1.AddItem Screen.Fonts(i) With UDPSever ‘控件的名字为UDPSever .RemoteHost= "172.16.50.24" ‘服务器主机IP名称 .RemotePort = 1001 ‘连接的端口号 .Bind 1002 ‘绑定到本地的端口 End With End Sub Private Sub txtSend_Change() UDPSever.SendData txtSend.Text ‘在键入文本时,立即将其发送出去 End Sub Private Sub UDPSever _DataArrival (ByVal bytesTotal As Long) 套接字 是一个抽象的概念,应用程序可以通过它进行收发数据,它可以像文件一样进行打开,读写和关闭的操作 。 套接字 允许应用层程序将I/O插入到 网络 中,并与 网络 的其他应用程序程序进行通信。 大家都知道,传输层可以实现端到端的通信,因此每一个传输层连接有两个端点,那么传输层连接的端点是什么呢?不是主机也不是主机的IP地址,不是应用进程也不是传输层协议的端口号,而是我们今天要认识的 套接字 。 上面讲到的... 1>单进程的 套接字 通信 2>多进程的 套接字 通信 3>多线程的 套接字 通信开始学习Linux基础知识的时候,我们知道Linux下一切皆文件,并且大致可以分为几类文件:普通文件、目录、连接文件、设备和设备文件、 套接字 、管道。而 套接字 就是实现 网络 上进程之间的通信, 套接字 也是文件。在TCP/IP协议中,IP地址和端口号唯一标识 网络 中的一个唯一进程,IP地址和端口号就是 套接字 网络 中要 【 计算机网络 】 数据报 套接字 数据报 套接字 。它提供了一种无连接、不可靠的双向数据传输服务。数据包以独立的形式被发送,并且保留了记录边界,不提供可靠性保证。数据在传输过程中可能会丢失或重复,并且不能保证在接收端按发送顺序接收数据。在TCP/IP协议簇中,使用UDP协议来实现数据报 套接字 。在出现差错的可能性较小或允许部分传输出错的应用场合,可以使用数据报 套接字 进行数据传输,这样通信的效率较高。其服务灵...