socket(一)

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)

阻塞

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章