您的位置:首页 > 运维架构 > Linux

linux系统调用——socket()

2008-10-18 15:43 281 查看
函数原型:

#include <sys/types.h>

#include <sys/socket.h>

int  socket(int
domain,int type,int protocol);
参数说明
(1)domain指需创建的socket所使用的协议族。在linux/socket.h中定义了linux支持的所有协议族,可见domain的取值是0-32中除21.27.28.29以外的值。/* Supported address families. */
#define AF_UNSPEC   0
#define AF_UNIX     1   /* Unix domain sockets      */
#define AF_LOCAL    1   /* POSIX name for AF_UNIX   */
#define AF_INET     2   /* Internet IP Protocol     */
#define AF_AX25     3   /* Amateur Radio AX.25      */
#define AF_IPX      4   /* Novell IPX           */
#define AF_APPLETALK    5   /* AppleTalk DDP        */
#define AF_NETROM   6   /* Amateur Radio NET/ROM    */
#define AF_BRIDGE   7   /* Multiprotocol bridge     */
#define AF_ATMPVC   8   /* ATM PVCs         */
#define AF_X25      9   /* Reserved for X.25 project    */
#define AF_INET6    10  /* IP version 6         */
#define AF_ROSE     11  /* Amateur Radio X.25 PLP   */
#define AF_DECnet   12  /* Reserved for DECnet project  */
#define AF_NETBEUI  13  /* Reserved for 802.2LLC project*/
#define AF_SECURITY 14  /* Security callback pseudo AF */
#define AF_KEY      15      /* PF_KEY key management API */
#define AF_NETLINK  16
#define AF_ROUTE    AF_NETLINK /* Alias to emulate 4.4BSD */
#define AF_PACKET   17  /* Packet family        */
#define AF_ASH      18  /* Ash              */
#define AF_ECONET   19  /* Acorn Econet         */
#define AF_ATMSVC   20  /* ATM SVCs         */
#define AF_SNA      22  /* Linux SNA Project (nutters!) */
#define AF_IRDA     23  /* IRDA sockets         */
#define AF_PPPOX    24  /* PPPoX sockets        */
#define AF_WANPIPE  25  /* Wanpipe API Sockets */
#define AF_LLC      26  /* Linux LLC            */
#define AF_MPLS     30  /* MPLS sockets         */
#define AF_BLUETOOTH    31  /* Bluetooth sockets        */
#define AF_MAX      32  /* For now.. */

/* Protocol families, same as address families. */
#define PF_UNSPEC   AF_UNSPEC
#define PF_UNIX     AF_UNIX
#define PF_LOCAL    AF_LOCAL
#define PF_INET     AF_INET
#define PF_AX25     AF_AX25
#define PF_IPX      AF_IPX
#define PF_APPLETALK    AF_APPLETALK
#define PF_NETROM   AF_NETROM
#define PF_BRIDGE   AF_BRIDGE
#define PF_ATMPVC   AF_ATMPVC
#define PF_X25      AF_X25
#define PF_INET6    AF_INET6
#define PF_ROSE     AF_ROSE
#define PF_DECnet   AF_DECnet
#define PF_NETBEUI  AF_NETBEUI
#define PF_SECURITY AF_SECURITY
#define PF_KEY      AF_KEY
#define PF_NETLINK  AF_NETLINK
#define PF_ROUTE    AF_ROUTE
#define PF_PACKET   AF_PACKET
#define PF_ASH      AF_ASH
#define PF_ECONET   AF_ECONET#define PF_ATMSVC   AF_ATMSVC
#define PF_SNA      AF_SNA
#define PF_IRDA     AF_IRDA
#define PF_PPPOX    AF_PPPOX
#define PF_WANPIPE  AF_WANPIPE
#define PF_LLC      AF_LLC
#define PF_BLUETOOTH    AF_BLUETOOTH
#define PF_MPLS     AF_MPLS
#define PF_MAX      AF_MAX

(2)type指定socket的类型,通常取值如下:

1)SOCK_STREAM:字节流套接口,用于TCP

2)SOCK_DGRAM:数据报套接口,用于UDP
3)SOCK_RAW:原始套接口4)SOCK_SEQPACKET:数据报长度有上限,其余同TCP

(3)protocol
可被设置为0,此时传输层协议由参数domain和type组合决定;也可被设为某个协议类型常值,可能取值及其含义如下:

1)IPPROTO_TCP  TCP传输协议

2)IPPROTO_UDP  UDP传输协议

3)IPPROTO_SCTP  SCTP传输协议
返回值

成功时返回一个新套接字描述符;
失败则返回-1。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息