1.发送数据(续1) ④ isovector:指向MO向量表的指针; ⑤ vectored:WO向量表的长度(字节); ⑥fags:传输控制标志。 缓冲发送:从 socked指定的套接字发送数据 数据取自buf所指向的缓冲区中的前 length个 字节,返回值是实际发出的字节数,应等于 ength,出错时返回-1 收集发送( gather write):一次发送若干个O 向量表指示的分散的数据块。 可控缓冲发送:紧急数据和寻址控制
1. 发送数据(续1) ④ iovector: 指向I/O向量表的指针; ⑤ vectorlen:I/O向量表的长度(字节); ⑥ flags:传输控制标志。 缓冲发送:从sockid指定的套接字发送数据, 数据取自buff所指向的缓冲区中的前length个 字节,返回值是实际发出的字节数,应等于 length,出错时返回-1。 收集发送(gather write):一次发送若干个I/O 向量表指示的分散的数据块。 可控缓冲发送:紧急数据和寻址控制
1.发送数据(续2) (2)无连接的数据发送 可控缓冲无连接发送: sendto(sockid, buff, length, flags, dstadd, addrlen) 可控收集无连接发送: sendmsg(sockid, message, flags) ① dstadd:指向目的 socket地址的指针; ② addrlen:目的 socke地址长度; ③ message:指向待发数据的指针
1. 发送数据( 续2) (2)无连接的数据发送 可控缓冲无连接发送: 可控收集无连接发送: ① dstadd: 指向目的socket地址的指针; ② addrlen : 目的socket地址长度; ③ message : 指向待发数据的指针。 sendto (sockid, buff, length, flags, dstadd, addrlen) sendmsg (sockid, message, flags)
2.接收数据 write(. read(socked, buff, length) sendo writev(: recv(sockid, buff, length, flags) sendto(: readv(sockid, iovector, vectorlen recvfrom(sockid, buff, length, flags, fromadd, addrlen) sendmsgo recvmsg(sockid, message, flags) 发送与接收系统调用 *在默认情况下是阻塞的; *正常返回值是实际发送或接收的字节数
2. 接收数据 write() : send() : writev() : sendto() : sendmsg() : 发送与接收系统调用: * 在默认情况下是阻塞的 ; *正常返回值是实际发送或接收的字节数. read(sockid, buff, length) readv(sockid, iovector, vectorlen) recvfrom(sockid, buff, length, flags, fromadd, addrlen) recv(sockid, buff, length, flags) recvmsg(sockid, message, flags)
1.25客户一服务器模式的 socket实现框架 ICP服的器 ket() 图1.6 面向 bindo 连接 listeN() 的实 CP客 L accer socket() 现框 阻L,等待各连请求 架 t() reado rite() 处F服请求 ite( 服务面 d() e() cosco
1.2.5 客户—服务器模式的socket实现框架 图1.6 面向 连接 的实 现框 架
图1.7无连接的客户一服务器模式实现框架 UDP服务器 socket() UDP客户 bindo) socket() rectron() bind() 1 阻,等待客广服务请求 服务请求 sendto() 处理服务请求 sendto() 服务应答 recvIromo close(
图1.7 无连接的客户—服务器模式实现框架