c++网络编程中socket函数

来源:互联网 发布:超融合与云计算的区别 编辑:程序博客网 时间:2024/06/16 21:59

1、函数原型

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


1.1 参数

这三个参数都是int类型的,但是他们各自有各自的含义,下面我们针对这三个参数进行分析:

(1)int domin:即协议域,又称为协议族。协议族决定了socket的地址类型,在通信中必须采用对应的地址,如AF_INET(IPV4)AF_INET6(IPV6)AF_LOCAL(或称AF_UNIX,Unix域socket)、AF_ROUTE等等。通常情况下我们使用AF_INET。

AF_INET的定义是:#define AF_INET 2,所以这里的参数都是int型的


(2)int type:是套接口类型,主要SOCK_STREAM(建立TCP连接)、SOCK_DGRAM(建立UDP)、SOCK_RAW;

SOCK_STREAM(建立TCP连接):提供面向连接的可靠的数据传输服务。数据被看作是字节流,无长度限制。例如FTP协议就采用这种。

SOCK_DGRAM(建立UDP):提供无连接的数据传输服务,不保证可靠性。

SOCK_RAW:该接口允许对较低层次协议,如IP,ICMP直接访问。


(3)int protocol:指定协议。常用的协议有,IPPROTO_TCPIPPTOTO_UDPIPPROTO_SCTPIPPROTO_TIPC等,它们分别对应TCP传输协议、UDP传输协议、STCP传输协议、TIPC传输协议。通常情况系设为0。

注意:并不是上面的type和protocol可以随意组合的,如SOCK_STREAM不可以跟IPPROTO_UDP组合。当protocol为0时,会自动选择type类型对应的默认协议。

2、所在头文件

#include <sys/types.h>

#include <sys/socket.h>

3、函数返回值

成功:返回套接字描述符(套接字的索引)

失败:返回-1

4、函数功能

返回一个套接字描述符,一个套接字描述符相当于一个套接字的索引号,在后续操作中是通过该索引号找到套接字进行操作。类似于文件描述符。



0 0
原创粉丝点击