所以,套接字是在内存中创建的某个类吗?对于每个客户端连接,都会在内存中创建此类的新实例吗?套接字中写入了连接的本地端口、端口和客户端的IP地址。有人能详细解释一下套接字的定义吗?
谢谢。
所以,套接字是在内存中创建的某个类吗?对于每个客户端连接,都会在内存中创建此类的新实例吗?套接字中写入了连接的本地端口、端口和客户端的IP地址。有人能详细解释一下套接字的定义吗?
谢谢。
套接字实际上是一种文件句柄类型,其后面可以是网络会话。
您可以像处理其他文件句柄一样读取和写入它(大多数情况下),并且数据将从会话的另一端进出。
您所描述的具体操作适用于套接字的服务器端。 服务器建立(绑定到)一个套接字,该套接字可用于接受传入连接。 接受后,您会得到另一个套接字以进行已建立会话的处理,使服务器能够返回并在原始套接字上侦听更多传入连接。
它们在内存中的表示因抽象级别而异。
在C的最低级别,它们只是文件描述符,即小的整数。 但是,您可能具有更高级别的 Socket
类,该类封装了底层套接字的行为。
我在网上找到了这篇文章。
简单来说,一个 socket 是由 IP 地址和端口号组成的,它作为接收或发送互联网信息的终点,并且通过 TCP 协议进行组织。这些构建块(与其他协议和技术一起)在后台工作,使得每个 Google 搜索、Facebook 帖子或技术博客都成为可能。
https://medium.com/swlh/understanding-socket-connections-in-computer-networking-bac304812b5c
网络套接字是在网络上运行的两个程序之间通信流的一个端点。
套接字是IP地址加端口号的组合
这是在互联网的无连接环境中,服务器处理许多客户端请求并且不保持连接时间长于即时请求服务的情况下,从服务器应用程序发出套接字请求的典型顺序:
实现步骤
在服务器端
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
AF_INET
只是众多地址族之一,还有诸如 AppleTalk、DECNet、X.25 等等的大量地址族。更准确地说,它们代表任意网络端点。 - paxdiablo