读Unix网络编程笔记

  一开始调用socket,这要求定义插口类型。Internet协议族(PF_INET)和数据报接口(sock_DGRAM)组合成一个UDP协议插口。socket的返回值是一个描述符,它可以具有其他Unix描述符的所有特性:可以用这个描述符调用read和write;可以用dup复制它,在调用了fork之后,父进程和子进程可以共享它。可以调用fcntl来改变它的属性,可以调用close来关闭它,等等。在我们的额例子中,可以看到插口描述符是函数sento和recvfrom的第一个参数。当程序终止时,(通过调用exit),所有打开的描述符,包括插口描述符都会被内核关闭。

  (1)创建TCP套接口

TCP套接口的创建于客户程序相同。

   (2)捆绑服务器的众所周知端口到套接口

通过设置网际套接口地址结构并调用bind函数,我们把服务器的众所周知端口捆绑到所创建的套接口。我们把IP地址指定为INADDR_ANY。它允许服务器在任意网络接口上接受客户连接(j假定服务器主机有多个网络接口)。以后我们将了解怎有限定服务器在某个给定网络接口上接受客户连接。

  (3)把套接口变换成监听套接口

通过调用Listen函数将该套接口变成一个监听套接口,来自客户的外来连接就在这个监听套接口上由内核接受。socket  bind  listen  是任何TCP服务器准备所谓的监听套接字(listening Descriptor)的三个通常步骤。

  常值LISTENQ在头文件unp.h中定义,它制定系统内核允许在这个监听描述字上排队的最大客户连接数。4.5节将详细说明客户连接的排队。

  (4)接受客户连接、发送应答

   一般情况下,服务器进程在调用accept函数后处于睡眠状态,等待单个客户连接的到达和内核对它的接受。TCP使用所谓的三次握手来建立连接。握手完毕accept函数返回,其返回值是一个称为已连接描述符的新描述符。该描述字用于与新近连接的客户通信。accept为每个连接到本服务器的客户返回一个新的已连接描述字。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值