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)

阻塞

 

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