sockets - Socket到底是什么

标签 sockets

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

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

谢谢

最佳答案

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

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

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

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

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

关于sockets - Socket到底是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16233193/

相关文章:

C++ 连接函数错误 - 参数无效

c++ - 在 Qt 中确定 TCP 套接字上的数据类型

c - 如何在 c 中为 linux 操作系统创建两个进程?

java - 在java中从客户端发送到服务器以及从服务器发送到客户端

Python - 确定ip是否是代理

python - python客户端和perl服务器: packing and unpacking bytes to send/receive

php - socket_accept 似乎卡在第一个连接上

javascript - Socket.io事件监听器/事件处理程序Socket.io

c - 将数据从 iphdr 传递到结构

c++ - Asio::async_connect 和 io_service.run 不编译