基本套接字编程
1.socket函数
为了执行网络IO,一个进程必须做的第一件事就是调用socket函数,指定期望的通信协议(TCP/UDP/UNIX的字节流协议),AF_XXX和DF_XXX,AF_前缀表示地址族,DF_前缀表示协议族。
2.connect函数
TCP客户用connect函数来建立与TCP服务器的连接。sofkfd是由socket函数返回的套接字描述符。
3.bind函数
bind函数把一个本地协议地址赋予一个套接字。
4.listen函数
listen函数仅由TCP服务器调用,它做两件事情。①当socket函数创建一个套接字,他被假设为一个主动的套接字(将调用connect发起连接的客户端套接字)。②函数的第二个参数规定了内核应该为相应套接字排队的最大连接个数。
5.accept函数
accept函数由TCP服务器调用,用于从已完成连接队列队头返回下一个已完成连接。如果已完成队列为空,那么进程被投入睡眠。
6.fork和exec函数
①一个进程创建一个自身的副本,这样每个副本都可以在另一个副本执行其他任务的同时处理各自的某个操作②一个进程执行另一个程序时,除了需要调用fork创建自己的副本以外,然后其中一个副本(子进程)调用exec函数 ,把它自身替换成新的程序。
7.并发服务器
UNIX编写并发服务器最简单的办法就是fork一个子进程来服务每个客户。
8.close函数
close函数用来关闭套接字,终止tcp连接。
小结
所有客户和服务器都从调用socket开始,它返回一个套接字 描述符。客户随后调用connect,服务器则调用bind,listen和accept。套接字通常使用close函数关闭。大多数TCP服务器是并发的,他们每个待处理的客户连接调用fork派生一个子进程。大多数UDP服务器是迭代的。