c++网络编程学习笔记(3)
来源:互联网 发布:linux性能优化 pdf 编辑:程序博客网 时间:2024/05/16 13:42
CHAPTER 2.Socket API 概述
一、 操作系统IPC机制概述
操作系统提供的IPC机制一般分为两类:
l 本地IPC ——如 共享内存、管道、门、信号、UNIX领域socket等等,只允许“位于同一计算机上”的实体之间通信。
l 远程IPC ——如 Internet领域socket、X.25电路、Win32命名管道,允许“配置或分布在一个网络上”的实体之间通信。
二、 Socket API
Socket API最初是在BSD UNIX中开发的,用来为TCP/IP协议族提供应用程序级接口。
l 在UNIX中,对大多数操作来说,Socket句柄和I/O句柄可以互换使用
l 在Windows中,对大多数操作来说,Socket句柄和I/O不能互换使用,虽然它们的使用目的类似。
Socket API包含大约二十多个系统函数,分五类:
1. 本地环境管理
Socket(), bind(), getsockname(),getpeername(),close()
2. 连接的建立和终止
Connect(),listen(),accept(),shutdown()
3. 数据传输机制
Send(),recv(),sendto(),recvfrom()
(UNIX上) Read(),write(),readv(),writev(),sendmsg(),recvmsg()
4. 选项管理
Setsockopt(),getsockopt()
5. 网络地址
Gethostbyname(),gethostbyaddr(),getipnodebyname(),getipnodebyaddr()
Getservbyname()
一个通信领域由一个“协议簇”和一个“地址簇”确定。
l 协议簇:一个协议簇是一个协议集合,用来提供一组特定的相关服务。
协议由以下两个参数共同指定:
· 协议簇 ——例如 “UNIX领域”(PF-UNIX) ;
“INTERNET领域”的IPv4 (PF-INET)和IPv6(PF-INET6) ;
ATMA(PF-ATMSVC) ;
x.25 (PF-X25) ;
Appletalk (PF-APPLETALK) 等等
· 服务类型 ——例如 TCP (SOCK_STREAM)
UDP (SOCK_DGRAM)
例如,通过传递PF_INET和SOCK_STREAM标志给socket()函数,就指定了TCP/IP协议。
l 地址簇:定义地址的格式,表达地址的字节的大小,以及它所包含的字段的数量,类型,顺序等。此外,地址簇还定义了一组解释地址格式的函数。
三、 Socket API的局限性
原始Socket API有几个局限性:容易出错,过于复杂,不可移植或不统一。
1. 容易出错的API
一般来说,操作系统使用句柄来标识其他I/O设备,如文件、管道、终端。这些句柄是通过弱类型的整数或指针类型实现的。
2. 过于复杂的API
Socket API通过一个接口来支持多个:
u 协议簇
u 通信/连接角色
u 通信优化
u 选项
3. 不可移植、不统一的API
u 函数名称 —— 各平台API不一样。
u 函数的语义 —— 某些函数在不同平台上表现出不同的行为。
u Socket句柄的类型 ——UNIX上是整数,Win32上使用的实际是指针
u 头文件 —— 不同的OS/编译器平台上,包含socket API的头文件不同。
- Linux+C学习笔记之网络编程
- "网络编程"学习笔记(3)
- 网络编程学习笔记
- 学习笔记--网络编程
- 网络编程学习笔记
- 学习笔记--网络编程
- 学习笔记---网络编程
- 网络编程学习笔记
- 网络编程 学习笔记
- 网络编程学习笔记,
- 网络编程学习笔记
- 网络编程 学习笔记
- C++学习笔记之网络编程2
- c++网络编程学习笔记(3)
- 学习笔记3-多线程与网络编程
- linux c 网络编程学习
- "网络编程"学习笔记(1)
- "网络编程"学习笔记(2)
- 匿名类型
- C# 3.0语言主要增强
- c++网络编程学习笔记(1)
- 流水一篇
- c++网络编程学习笔记(2)
- c++网络编程学习笔记(3)
- blog 搬家了
- c++网络编程学习笔记(4)
- 华尔街分析师:微软将雅虎从困境逼入绝境
- stdafx.h是什么用处?
- 一个简单的分页控件
- 第1章 JavaScript是什么
- 少走弯路的十条忠告
- XML用在哪里