15

我不知道确切的套接字是什么意思。服务器在特定计算机上运行,​​并具有绑定到特定端口号的套接字。服务器只是等待,侦听套接字以供客户端发出连接请求。当服务器接受连接时,它会获得一个绑定到同一本地端口的新套接字,并将其远程端点设置为客户端的地址和端口。它需要一个新的套接字,以便它可以继续侦听原始套接字的连接请求,同时满足已连接客户端的需求。

那么,套接字是在内存中创建的某个类吗?对于每个客户端连接,都会在内存中创建此类的新实例?socket里面写着本地端口和连接的客户端的端口和IP号。有人可以详细解释一下套接字的定义吗?

谢谢

4

5 回答 5

14

套接字实际上是一种文件句柄,其背后可以是网络会话。

您可以(大部分)像任何其他文件句柄一样读取和写入它,并让数据进出会话的另一端。

您描述的具体操作是针对套接字的服务器端的。服务器建立(绑定到)一个可用于接受传入连接的套接字。接受后,您会为已建立的会话获得另一个套接字,以便服务器可以返回并侦听原始套接字以获取更多传入连接。

它们在内存中的表示方式取决于您的抽象级别。

在 C 的最低级别,它们只是文件描述符,一个小整数。但是,您可能有一个更高级别的Socket ,它封装了低级别套接字的行为。

于 2013-04-26T09:36:10.413 回答
5

根据 Michael J. Doonahoo 和 Kenneth L. Calvert 的“程序员 C 实用指南中的 TCP/IP 套接字”(第 1 章,第 1.4 节,第 7 页):

套接字是一种抽象,应用程序可以通过它发送和接收数据,就像打开文件允许应用程序读取和写入数据到稳定存储一样。套接字允许应用程序“插入”网络并与也插入同一网络的其他应用程序进行通信。由一台机器上的应用程序写入套接字的信息可以由另一台机器上的应用程序读取,反之亦然。

请参阅本书以从程序员的角度清楚地了解套接字。

于 2017-12-06T13:32:30.633 回答
2

网络套接字是在网络上运行的两个程序之间的通信流中的一个端点。

套接字是IP地址加端口号的组合

这是在 Internet 的无连接上下文中来自服务器应用程序的典型套接字请求序列,其中服务器处理许多客户端请求并且不保持连接的时间长于提供即时请求的时间:

实施步骤

在服务器端

initilize socket() 
--
bind() 
-- 
recvfrom() 
--
(wait for a sendto request from some client) 
-- 
(process the sendto request) 
--
sendto (in reply to the request from the client...for example, send an HTML file)

相应的客户端套接字请求序列将是:

socket() 
--
bind() 
--
sendto() 
--
recvfrom()

这样您就可以建立管道连接..更多 http://www.steves-internet-guide.com/tcpip-ports-sockets

于 2018-12-07T10:13:46.640 回答
1

套接字定义 运行在两个计算机系统上的两个进程之间的通信可以完全由关联指定:{protocol, local-address, local-process, remote-address, remote-process} 我们也将半关联定义为 {protocol, local-address, local-process} 或 {protocol, remote-address, remote-process},指定连接的一半。这种半关联也称为套接字,或传输地址。套接字一词已被伯克利 Unix 网络系统普及,它是“通信的端点”,对应于半关联的定义。

于 2020-06-20T19:23:28.153 回答
1

我在网上找到了这篇文章。

总而言之,套接字是 IP 地址和端口的组合,它充当通过 Internet 接收或发送信息的端点,由 TCP 组织。这些构建块(与各种其他协议和技术一起)在后台工作,使每个 google 搜索、facebook 帖子或介绍性技术博客帖子成为可能。

https://medium.com/swlh/understanding-socket-connections-in-computer-networking-bac304812b5c

于 2020-12-26T19:44:10.697 回答