18.3.2 创建套接字

本文介绍了如何使用socket()系统调用来创建套接字,并详细解释了domain、type和protocol参数的作用。文中还列举了常见的套接字域及类型,如AF_INET和SOCK_STREAM等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

18.3.2  创建套接字

套接字是通过标准的UNIX文件描述符和其他的程序通信的一个方法。套接字在使用前必须先被建立,建立套接字的系统调用为socket(),它的一般形式是:

 

int socket(int domain, int type, int protocol);

 

创建出来的套接字是一条通信线路的一个端点,domain参数负责指定地址族,type参数负责指定与这个套接字一起使用的通信类型,而protocol参数负责制定所使用的协议。domain参数的取值范围如表18.2所示。

18.2  domain参数的取值范围

   

   

AF_UNIX

UNIX内部(文件系统套接字)

AF_INET

ARPA因特网协议(UNIX网络套接字)

AF_ISO

ISO标准协议

AF_NS

施乐网络系统协议

AF_IPX

NOVELL IPX协议

AF_APPLETALK

Appletalk DDS

 

最常用的套接字域是AF_UNIXAF_INET,前者用于通过UNIX文件系统实现的本地套接字,后者用于UNIX网络套接字。AF_INET套接字可以用在穿过包括Internet在内的各种TCP/IP网络而进行通信的应用程序中。

套接字参数type指定了与新套接字对应的通信特性。它的取值范围为枚举常量SOCK_STREAMSOCK_DGRAMSOCK_STREAM是一个有序的、可靠的、基于连接的双向字节流。对于一个AF_INET域的套接字来说,如果在恋歌流式套接字的两端之间建立的是一个TCP连接,连接时默认值即为该特性。SOCK_DGRAM是一个数据图服务,可以用来发送最大长度是一个固定值的消息,但消息是否会被送达或者消息的先后次序是否会在网络传输中被重新安排并没有保证。对于AF_INET域的套接字来说,这种类型的通信是由UDP提供的。

通信所用的协议通常是由套接字的类型和套接字的域来决定,如果还有其他的协议可以选择,那么就在protocol参数里设置。protocol参数默认值为0,表示使用默认的协议。

socket系统调用返回的是一个描述符,它与文件描述符非常相似。当这个套接字和通信线路另一端的套接字连接好以后,就可以进行数据的传输和接收操作了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值