int socket(int,int,int)详解

在socket通信中,会用int socket(int,int,int)新实例初始化 Socket 类使用指定的地址族、 套接字类型和协议。
但真的了解他的使用方式了么?

上面的socket初始化如果成功将会返回过来一个int类型的正整数,否则就会返回一个-1

下面是来看一下函数中是如何定义这个socket的各个参数的类型的

使用socket这个函数

第一位AddressFamily地址族

Linux#include <sys/socket.h>中,宏定义了40个类型

一般常用AF_UNIXAF_INET
AF_UNIX这个类型的地址族用于单台服务器通信,常用语嵌入式类型的通信
AF_INET这个比较通用

Windows下,AF_INET = PF_INET可以完全等同使用,
而在Unix/Linux系统中,在不同的版本中这两者有微小差别.对于BSDAF,对于POSIXPF.

第二位SocketType,是套接字类型

关于套接字类型,有下面5种类型的宏定义

第三位ProtocolType,是协议类型

Mac下,类似于Linux,有这么一段话Protocol families, same as address families for now.。现在,协议族跟地址族相似
所以,可以跟地址族混用。
默认使用0,未定义协议类型。

上面说明清楚了,就可以来初始化一个套接字实例了。

上面就是是实例化一个套接字,用网络类型的地址族,像:TCP,UDP等,都在传输层;
使用了套接字流的类型(类型还有数据报套接字
然后就选择未定义类型的协议
如果初始化成功,就会返回一个 int 类型的非负整数,否则就返回一个-1
用于判断是否初始化成功的代码

 

Leave a Reply

Your email address will not be published. Required fields are marked *