荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: everlove.bbs@bbs.shuoshuo.net (我是如此厌倦), 信区: Linux
标  题: unp第四章学习体会
发信站: 寂寞森林 (Mon Sep 23 10:38:18 2002)
转信站: SZUBBS!news2.happynet.org!news.happynet.org!LonelyWood


发信人: clown (梧桐叶), 信区: UNP
标  题: unp第四章学习体会
发信站: UNIX编程 (2001年07月17日19:20:16 星期二), 站内信件

现在任务又比较急迫了,看书的时间又少了。而且干刚买了《Linux程序设计
权威指南》,粗略的看了一下,觉得还不错,因此几本书会交叉的看了。

言归正传,第四章主要介绍套接口编程的几个函数,也许这几个函数你已经
比较熟悉的,但是再看一遍绝对还是会有收获的。
1)int socket(int family, int type, int protocol);
family中AF_xx和PF_xx是一样的,在一个头文件里面做了宏定义。
type说明套接口的类型:基于tcp, udp还是原始套接口?在监听方式中
可能是SOCK_PACKET。
protocol,一般是ip,宏定义为0。
2)int connect(...);
学习该函数的时候,终于完整地明白了TCP/IP中RST报文的含义:该端口没有
提供服务;服务器想取消连接;报文错误。
2)int bind(...);
客户端一般不调用该函数,若调用该函数则指明了数据报中的源ip。
服务器一般要调用该函数来指明提供服务的网卡,一般为常值INADDR_ANY,
则该服务器的loopback, eth0, eth1 ...等都提供了套接口服务。
3)int listen(...);
该函数只有服务器调用,主要指明内核提供的套接口最大连接数。
注意内核对于某个监听的套接口,维护着两个队列:未完成连接队列
和已完成连接队列,该函数中的参数指定的是这两个队列长度之和。
SYN Flooding和DOS攻击就是填充服务器的未完成队列,使服务器无法
接受正常用的连接。
4)accept, close, shutdown这几个函数比较容易理解,没有什么好说的。
5)getsockname, getpeername,这两个函数我以前没怎么注意,看了之后
发现确实需要。书中举的inetd派生服务器的例子中,提到内核维护着
一个保存所有打开的文件描述符的链表,在apue中游详细的介绍,而且我
做的讲座中也详细介绍了该部分,这里就不再介绍了。
--
※ 来源:·UNIX编程 www.tiaozhan.com/unixbbs/·[FROM: 202.114.1.60]

--
我站在夜的尽头
窗外的雨悄悄坠落





※ 来源:.寂寞森林 http://bbs.shuoshuo.net  ◆ FROM: 211.161.158.231


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店