Socket网络编程_第1页
Socket网络编程_第2页
Socket网络编程_第3页
Socket网络编程_第4页
Socket网络编程_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Socket 网络编程常用的结构及函数小结网络编程常用的结构及函数小结 IP 地址的作用是标示计算机的网卡地址 每台计算机都有一个 IP 地址 端口 是指计算 机中为了标示在计算机中访问网络的不同程序而设的编号 并不是网卡接线的端口 而是 不同程序的逻辑编号 并不是实际存在的 域名 是用来代替 IP 地址来标示计算机的一种 直观名称 例如百度网站的 IP 地址是 202 108 22 43 这个 IP 地址没有任何逻辑含义 不便记忆 而 是一个便于记忆的名称 用于代替这个 IP 地址 套接字 的本意是插座 在网络中用来描述计算机中不同程序与其他计算机程序的通信方式 常用的套接字类型有 3 种 1 流套接字 SOCK STREAM 使用了面向连接的可靠的数据通信方式 即 TCP 协议 2 数据报套接字 Raw Sockets 使用了不面向连接的数据传输方式 即 UDP 3 原始套接字 SOCK RAW 没有经过处理的 IP 数据包 可以根据自己程 序的要求进行封装 网络协议是指不同的计算机 不同的操作系统在进行网络通信时的统一约定 网络服 务指的是网络上的计算机通过运行程序为其他的计算机提供信息或运算的功能 套接字相关的数据类型 sockaddr 和 sockaddr in sockaddr 用来保存一个套接 字 定义如下 struct sockaddr unsigned short int sa family 指定通信地址类型 如果是 TCP IP 通信 则值为 AF inet char sa data 14 最多用 14 个字符长度 用来保存 IP 地址和端口信息 sockaddr in 的功能与 socdaddr 相同 也是用来保存一个套接字的信息 不同的是 将 IP 地址与端口分开为不同的成员 定义如下 struct sockaddr in unsigned short int sin family 指定通信地址类型 uint16 t sin port 套接字使用的端口号 struct in addr sin addr 需要访问的 IP 地址 unsigned char sin zero 8 未使用的字段 填充为 0 在这一结构中 in addr 也是一个结构体 定义如下 用于保存一个 IP 地址 struct in addr uint32 t s addt 用域名取得主机的 IP 地址 struct hostent gethostbyname const char name 结构体 hostent 的定义如下 struct hostent char h name 正式的主机名称 char h aliases 这个主机的别名 int h addrtype 主机名的类型 int h length 地址的长度 char h addr list 从域名服务器取得的主机地址 用 IP 地址返回域名 struct hostent gethostbyaddr const void addr socklen t len int type 由协议名取的协议数据 struct protoent getprotobyname char name 结构体 protoent 定义如下 struct protoent char p name 协议的名称 char p aliases 协议的别名 int p proto 协议的序号 由协议编号取得协议信息 struct protoent getprotobynumber int proto 取得系统支持的所有协议 struct protoent getprotoent void 取得系统支持的网络服务 struct servent getservent void 结构体 servent 定义如下 struct servent char s name 这个服务的名称 char s aliases 这个服务可能的别名 int s port 这个服务可能的端口 char s proto 这个服务可能使用的协议 用名称取得系统所支持的服务 struct servent getservbyname char name char proto name 服务器名称 proto 服务器所使用的协议 由端口取得服务名称 struct servent getservbyport int port char proto port 是端口的编号 需要注意的是这个端口号需要用 htons 函数进行转换 proto 表示一 个协议的字符串 将网络地址转换成长整型 long inet addr char cp cp 表示一个 IP 地址字符串 将长整型 IP 地址转换成网络地址即大小端模式转换 char inet ntoa struct in addr in 将计算机中的 32 位长整型数转换成网络字符顺序的 32 位长整型数 uint32 t htonl uint32 t hostlong 将计算机中的 16 位整型数转换成网络字符顺序的 16 位整型数 uint16 t htons uint16 t hostshort 将网络字符顺序的 32 位长整型数转换成计算机中的 32 位长整型数 uint32 t ntohl uint32 t netlong 将网络字符顺序的 16 位整型数转换成计算机中的 16 位整型数 uint16 t ntohs uint16 t netshort herror 函数显示错误 void herror const char S s 是一个字符串 函数先输出这个字符串 然后输出错误信 息 创建套接字函数 int socket int domain int type int protocol 参数 domain 用于指定创建套接字所使用的协议族 可取 AF UNIX AF INET AF INTE6 参数 type 指定套接字的类型 可取 SOCK STREAM SOCK DGRAM SOCK RAW 参数 protocol 通常设置为 0 在指定套接字上创建链接函数 int connect int sockfd const struct sockaddr serv addr socklen t addrlen 参数 sockfd 是一个由函数 socket 创建的套接字 参数 serv addr 是一个地址结构 指定服务器的 IP 地址和端口号 参数 addrlen 为参数 serv addr 的长度 将一个套接字和某个端口绑定在一起的函数 int bind int sockfd struct sockaddr my addr socklen t addrlen 一般只有服务器端的程序调用 参数 my addr 指定了 sockfd 将绑定到的本地地址 可以将参 数 my addr 的 sin addr 设置为 INADDR ANY 而不是某个确定 IP 地址就可以绑定到任何网络接 口 把套接字转化为被动监听函数 int listen int s int backlog 参数 s 为套接字 参数 backlog 指定链接请求队列的最大长度 接收连接请求函数 int accept int s struct sockaddr addr socklen t addrlen 参数 s 是由函数 socket 创建 经函数 bind 绑定到本地某一端口上 然后通过函数 listen 转 化而来的监听套接字 参数 addr 用来保存发起连接请求的主机的地址和端口 参数 addrlen 是 addr 所指向的结构体的大小 在 TCP 套接字上发送数据函数 ssize t send int s const void msg size t len int flags 函数只能对处于连接状态的套接字使用 参数 s 为已建立好连接的套接字描述符 即 accept 函 数的返回值 参数 msg 指向存放待发送数据的缓冲区 参数 len 为待发送数据的长度 参数 flags 为控制选项 一般设置为 0 在 TCP 套接字上接收数据函数 ssize t recv int s void buf size t len int flags 函数 recv 从参数 s 所指定的套接字描述符 必须是面向连接的套接字 上接收数据并保存到参 数 buf 所指定的缓冲区 参数 len 则为缓冲区长度 参数 flags 为控制选项 一般设置为 0 在 UCP 套接字上发送数据函数 ssize t sendto int s const void msg size t len int flags const struct so ckaddr to socklen t tolen 函数功能与函数 send 类似 但函数 sendto 不需要套接字处于连接状态 所以该函数通常用来 发送 UDP 数据 同时因为是无连接的套接字 在使用 sendto 时需要指定数据的目的地址 参数 m sg 指向待发送数据的缓冲区 参数 len 指定了待发送数据的长度 参数 flags 是控制选项 含义与 send 函数中的一致 参数 to 用于指定目的地址 目的地址的长度由 tolen 指定 在UDP套接字上接收数据函数 ssize t recvfrom int s void buf size t len int flags struct sockaddr f rom socklen t fromlen 与函数 recv 功能类似 只是函数 recv 只能用于面向连接的套接字 而函数 recvfrom 没有此 限制 可以用于从无连接的套接字上接收数据 参数 buf 指向接收缓冲区 参数 len 指定了缓冲区的大小 参数 flags 是控制选项 含义与 recv 中的一致 如果参数 from 非空 且该套接字不是面向连接的 则函数 recvfrom 返回时 参数 from 中将 保存数据的源地址 参数 fromlen 在调用 recvfrom 前为参数 from 的长度 调用 recvfrom 后将保存 from 的实 际大小 关闭套接字函数 int close int fd 参数 fd 为一个套接字描述符 函数 int shutdown int s int how 功能与 close 类似 但是 shutdown 功能更强 大 它允许对套接字进行单向关闭或全部禁止 参数 s 为待关闭的套接字描述符 参数 how 指定了关闭的方式 inet 系列函数用于网络地址的格式转换 获取和设置套接字属性函数 int getsockopt int s int level int optname void optval cocklen t optlen int setsockopt int s int level int optname const void optval socklen t o ptlen 参数 s 为一个套接字 参数 level 是进行套接字选项操作的层次 参数 optname 是套接字选项名称 对于函数 getsockopt 参数 opval 用来存放获得的套接字选项 参数 optlen 在调用函数前 其值为 optval 指向的空间的大小 调用完后则其值为参数 optval 所保存的结果的实际大小 对于函数 setsockopt 参数 optval 是待设置的套接字选项的值 参数 optlen 是选项的长 度 多路复用函数 int select int n fd set readfds fd set writefds fd set exceptfds struc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论