什么是Socket

Sim*_*mon 4 sockets

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

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

谢谢

pax*_*blo 9

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

您可以(大多数情况下)读取和写入任何其他文件句柄,并将数据转发到会话的另一端.

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

它们在内存中的表示方式因您的抽象级别而异.

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

  • 更准确的说法是“它背后是网络会话的*端点”。 (2认同)

AJ1*_*993 7

根据 Michael J. Doonahoo 和 Kenneth L. Calvert 撰写的《C 语言中的 TCP/IP 套接字 - 程序员实用指南》(Chptr 1,第 1.4 节,第 7 页):

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

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