2.接收连接 服务器端的动作,bind()后两步:一是创建侦 听队列,以存储多个连接请求;二是接收连接。 (1) listen O Listen (socketid, quelen) ① socked本地 socket号; ② quelen队列长度,限制排队请求的个数。 成功返回0,失败返回1 listen()成功后,该套接字成为准备接收连接 的模式,称为被动套接字
2. 接收连接 服务器端的动作,bind( )后两步:一是创建侦 听队列,以存储多个连接请求;二是接收连接。 (1)listen(): ① sockid 本地socket号; ② quelen 队列长度, 限制排队请求的个数。 成功返回0,失败返回-1。 listen()成功后,该套接字成为准备接收连接 的模式,称为被动套接字。 Listen(socketid, quelen)
2.接收连接(续) (2) accept ( newsock= accept( sockid, clientaddr, paddrlen) ① socked:本地 socket号。 ② clientaddr:指向初始值为空的客户 socket地 址结构的指针,返回时放入实际地址。 ③ padden:指向初始值为0的客户 socke地址 长度变量的指针,返回时放入实际长度。 ④ newsock:返回的新 socket号,它与客户建立 了连接,而原 Socket可继续用来接收新的连接 请求
2. 接收连接(续) (2)accept() ① sockid : 本地socket号。 ② clientaddr:指向初始值为空的客户socket地 址结构的指针,返回时放入实际地址 。 ③ paddrlen:指向初始值为0的客户socket地址 长度变量的指针,返回时放入实际长度 。 ④ newsock:返回的新socket号,它与客户建立 了连接,而原Socket可继续用来接收新的连接 请求。 newsock = accept ( sockid, clientaddr, paddrlen)
图12 accept()调用返回前后的状态 服务器 客户 acce p()| initsock!连接请求 connect() Hd sock a)acep(返回前的状态 服务器 客 acep()| initsock F连接 SOC k connect() newsock口 (b) accept t()返回后的状公
图1.2 accept( )调用返回前后的状态
:服务器 ck 连接 sock connect() 图1.3 newsock一 fork() 从服各器 使用并 迮接 发服务 initsock日 器 newsock By 生一个 从服务 (a)fork()返叫后的状态 :服务器 客) close(newsock) initsock口 d sock connect() 迮接 从服务器 close(initsock) newsock B (b)、从服务器关相应的套接了
图1.3 使用并 发服务 器---产 生一个 从服务 器
1.2.4数据的发送与接收 1.发送数据 (1)面向连接的数据发送 缓冲发送: write(socked, buff, length) 可控缓冲发送: send(sockid, buff, length, flags) 收集发送: writev(sockid, iovector, vectorlen) ① soc kid:本地 socket号; ②buf:指向发送缓冲区的指针; ③ length:发送数据长度(字节);
1.2.4 数据的发送与接收 1. 发送数据 (1)面向连接的数据发送 缓冲发送: 可控缓冲发送: 收集发送: ① sockid:本地socket号; ② buff:指向发送缓冲区的指针; ③ length: 发送数据长度(字节); write(sockid, buff, length) writev(sockid, iovector, vectorlen) send(sockid, buff, length, flags)