美文网首页
网络编程:Socket API

网络编程:Socket API

作者: wangawu121 | 来源:发表于2020-05-23 15:53 被阅读0次

    Socket API

    1.OS IPC机制

    OS提供的IPC机制一般分为两类:

    • 本地IPC

      只允许位于同一计算机上的实体之间通信的机制,如内存共享、管道、UNIX的socket、门、信号等。

    • 远程IPC

      循序配置或分布在一个网络上的实体之间通信的机制,如Internet领域socket、X。25电路、win32命名管道。

    2.Socket API

    Socket和句柄

    Socket API最初是在BSD UNIX中开发给TCP/IP协议簇提供应用程序接口的,后来被移植到大多数OS中。它是在TCP/IP上编写进程间通信的事实上的标准。

    • 在应用程序中可以用Socket API中的函数来创建、管理本地通信端点,这些端点称为socket。
    • 我们通过一个句柄(handle)访问一个socket:一个socket句柄可以标识出OS维护的一个通信端点,同时可以使程序不受OS内核实现细节的影响,即不依赖于OS底层细节。
    • 每个socket可以绑定到一个本地地址和一个远程地址上,这些地址定义了两个或多个通过socket通信的对等实体(peers)之间的关系。

    socket系统函数

    Socket API有大约二十多个系统函数,可以分为五类:

    (1)本地环境管理

    这些函数用于管理本地环境信息,这些信息通常存储在OS内核或系统库中。

    函数 作用
    socket() factory function,用于分配一个socket句柄并返回给调用者
    bind() 将一个socket句柄和一个本地或远程地址关联起来
    getsockname() 返回socket绑定的本地地址
    getpeername() 返回socket绑定的远程地址
    close() 释放socket句柄,使其可以复用

    (2)连接的建立和终止

    函数 作用
    connect() 主动在一个socket句柄上建立连接
    listen() 表示愿意被动侦听来自客户的连接请求
    accept() factory function,用于相应用户请求,创建一个新的连接
    shutdown() 有选择地终止双向连接中读取方和/或写入方地数据流

    (3)数据传输机制

    用于通过socket句柄发送和接收数据

    函数 作用
    send() recv() 通过某一特定I/O句柄,传送和接收数据缓冲区
    sendto() recvfrom() 交换无连接数据报。每一个sendto()调用都要提供接收方的网络地址

    (4)选项管理

    这些函数允许程序员改变缺省的socket行为,从而支持多播和广播,并且能修改/查询传输缓冲区的大小。

    函数 作用
    setsockopt 在协议栈的不同层修改选项
    getsockopt 在协议栈的不同层查询选项

    (5)网络地址

    用来将具有可读性的名称解析为低级网络地址

    函数 说明
    gethostbyname() gethostbyaddr() 处理主机名和IPv4之间的网络地址映射
    getipnodebyname() getipnodebyaddr() 处理主机名和IPv4/IPv6地址之间的网络地址映射
    getservbyname() 通过具有可读性的名称来标识服务(service)

    3.通信领域的组成:协议簇与地址簇

    Socket API常用来编写TCP/IP应用程序,但它也可以广泛支持多个通信领域。

    一个通信领域由一个协议簇和一个地址簇确定。

    • 协议簇

    一个协议簇是一个协议集合,用来提供一组特定的相关服务。在通过Socket API创建socket时,协议时通过以下两个参数共同指定的:

    1. 协议簇

    2. 服务类型

      例如,有序可靠的字节流(SOCK_STREAM)、不可靠的数据报(SOCK_DGRAM)等

    • 地址簇

    地址簇定义地址的格式、表达地址的字节大小,以及它所包含的字段的数量、类型、顺序等。

    地址簇还定义了一组解释地址的函数,它有诸如确定IP数据报将要到达的子网等等功能。

    相关文章

      网友评论

          本文标题:网络编程:Socket API

          本文链接:https://www.haomeiwen.com/subject/hgqlahtx.html