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。
#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。
相关文章推荐
- linux:socket 系统调用在linux内核中的实现流程图
- Linux下socket设置为非阻塞方式和fcntl系统调用
- linux-kernel 3.5.3Tcp系统调用,源码分析2-sys_socket & sock_create
- Linux下socket设置为非阻塞方式和fcntl系统调用
- Linux socket系统调用(一)
- Linux下socket设置为非阻塞方式和fcntl系统调用
- Linux socket系统调用(二)----sock_alloc()
- Linux下系统调用编程socket(2)
- Linux下socket设置为非阻塞方式和fcntl系统调用
- linux下系统调用编程socket进程通信---(1)
- Linux系统调用列表
- Linux——系统调用VS库函数
- socket相关系统调用的调用流程
- Linux系统调用过程
- 【转】linux内核编译与系统调用的添加(适合3.0及以后版本内核)
- linux-man命令中的编号含义(包括系统调用和库函数讲解)
- Linux 中的read系统调用到底是阻塞还是非阻塞的
- Linux系统调用-- recv/recvfrom/recvmsg函数详解
- linux历程--文件编程(系统调用)
- Linux系统调用列表