1.创建套接字
result=socket(pf,type,protocol)
pf:套接字使用的协议族
type:指定了所需的通信类型
protocol:用于选择协议
1.1 UNIX管道机制
管道与标准网络操作的区别在于,管道同时创建了用于通信的两个端点。
socketpair(pf,type,protocol,sarray)
sarray:二元整数数组的地址。sarray同时创建了2个套接字。
2.套接字的继承和终止
UNIX使用fork和exec。fork创建当前运行程序的一个副本。用一个所需的程序代替新副本。
fork继承了对所有打开套接字的访问,继承了对所有打开文件的访问。
每个套接字的引用计数,调用close,计数为0时删除套接字。
close(socket)
3.一旦创建了套接字,服务器就使用bind为套接字建立一个本地地址。
bind(socket,localaddr,addrlen)
localaddr:指定套接字要绑定的本地地址结构
addrlen:指定地址长度字节数
4.将套接字连接到目的地址
初始创建的套接字处于未连接的状态,即并未与任何目的地址关联。可靠数据流必须使用connect建立连接。
connect(socket,destaddr,addrlen)
5.发送数据
send,write,writev:已连接,不允许指定目的地址
write(socket,buffer,length)
阻塞
send(socket,message,length,flags)
无连接:sendto,sendmsg
6.接收数据
已连接:read
readv
recv(socket,buffer,length,flags)
无连接:recvfrom,recvmsg
7.指明服务器的队列长度
listen(socket,qlength)
8.服务器接受连接
阻塞
newsock=accept(socket,addr,addrlen)
9处理多重服务的服务器
select,通常用于I/O
nready=select(ndesc,indesc,outdesc,excdesc,timeout)
阻塞