套接字连接

最初,会在未连接状态下创建套接字,这意味着套接字未与任何外部目标关联。

connect 子例程将永久目标绑定到套接字,使其处于已连接状态。 应用程序必须先调用 connect 子例程以建立连接,然后才能通过可靠的流套接字传输数据。 与无连接数据报服务配合使用的套接字在使用前无需连接,但连接套接字可以在每次不指定目标的情况下传输数据。

connect 子例程的语义取决于底层协议。 在互联网系列中需要可靠数据流传输服务的应用程序应选择 Transmission Control Protocol (TCP)。 在这种情况下, connect 子例程构建与目标的 TCP 连接并返回错误 (如果不能)。 在无连接服务的情况下, connect 子例程只不过是在本地存储目标地址。 同样,在操作系统网络设备驱动程序 (NDD) 系列中需要面向连接的数据报服务的应用程序应选择异步传输方式 (ATM) 协议。 ATM 协议中的连接建立永久虚电路 (PVC) 或交换虚电路 (SVC)。 对于 PVC ,设置了本地站,没有网络活动。 对于 SVC ,使用远程站在网络中端到端地设置虚拟电路。

在客户机进程与服务器进程之间建立连接。 在面向连接的网络环境中, 客户机 进程启动连接, 服务器 进程接收或响应连接。 客户机和服务器交互如下所示:
  • 服务器在愿意提供其广告服务时,将套接字绑定到与服务关联的知名地址,然后被动地侦听其套接字。 然后,不相关的进程可以与服务器会合。
  • 将服务器进程套接字标记为指示要在其上接受入局连接。
  • 客户机通过启动与服务器套接字的连接来请求来自服务器的服务。 客户机进程使用 connect 子例程来启动套接字连接。
  • 如果在 connect 调用时未绑定客户机进程的套接字,那么系统将根据需要自动选择名称并将其绑定到套接字。 这是本地地址与套接字绑定的通常方式。
  • 如果连接失败,那么系统会返回错误 (但是,系统自动绑定的任何名称仍存在)。 否则,套接字将与服务器相关联,并且可以开始数据传输。