美文网首页
网络编程: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数据报将要到达的子网等等功能。

相关文章

  • 二十四:Python之socket

    socket:通过网络完成进程间通信的方式,socket也被称作 ‘套接字’ Socket本质是编程接口(API)...

  • iOS网络操作

    iOS提供的API socket 方式 IOS 提供的socket 方式的网络编程接口为CFSocket。CFSo...

  • 网络编程:Socket API

    Socket API 1.OS IPC机制 OS提供的IPC机制一般分为两类: 本地IPC只允许位于同一计算机上的...

  • Socket和TCP的对应关系

    前言   使用TCP/IP网络协议时,一般都是基于Socket的API进行网络编程。应用程序通过Socket接口和...

  • Socket 是如何工作的?

    Socket本质是网络通信编程接口(API),平时我们用到的high-level网络编程底层实现其实就是Socke...

  • iOS 开发 网络编程详解之Socket详解

    Socket基本概念 建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对T...

  • 许世伟的Go语言基础 第五章总结

    第5章 网络编程 5.1 socket编程 以往socket编程: 建立socket:使用socket()函数。 ...

  • 网络编程

    python学习笔记-网络编程 socket编程: socket()函数:socket.socket([famil...

  • 网络编程

    网络 Socket 基于TCP协议的Socket编程 基于UDP协议的Socket编程

  • iOS Socket UDP广播

    建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TC...

网友评论

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

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