网络编程:Socket API

2020-05-23  本文已影响0人  wangawu121

Socket API

1.OS IPC机制

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

2.Socket API

Socket和句柄

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

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数据报将要到达的子网等等功能。

上一篇 下一篇

猜你喜欢

热点阅读