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)
阻塞