linux 的网络编程 (一)
1.linux 的网络套接字操作函数
1.1 创建套接字描述符函数
linux 使用socket函数来创建一个套接字描述符,对该函数的调用如下:
#include <sys/types.h> #include <sys/socket.h> int scoket(int domain,int type,int protocol) /* 函数调用成功返回套接字的描述符,否则返回-1 参数说明: 1.domain:套接字的协议 2.type:套接字的类型 3.protocol:除了使用原始套接字以外,通常情况下设置为0,以表示使用默认的协议 */
socket函数支持的协议族:
- AF_UNIX,AF_LOCAL:本地交互协议
- AF_INET:IPv4协议
- AF_INET6: IPv6协议
- AF_NETLINK:内核接口设备协议
- AF_IPX:IPX-Novell协议
- AF_X25:ITU-T.25/ISO-8208协议
- AF_AX25:业余无线电AX.25协议
- AF_ATMPVC:原始ATM接入协议
- AF_APPLETALK:苹果的appletalk协议
- AF_PACKET:底层的数据包接口
socket 函数支持的套接字类型:
- SOCK_STREAM:数据流
- SOCK_DGRAM:数据报
- SOCK_SEQPACKET:顺序数据报
- SOCK_RAW:原始套接字
- SOCK_RDM:可靠传递消息
- SOCK_PACKET:数据包
使用socket函数创建套接字代码socket_demo.c如下:
#include <sys/types.h> #include <sys/socket.h> #include <stdio.h> int main (){ int socket_fd; socket_fd = socket(AF_INET,SOCK_STREAM,0); if (socket_fd < 0) { printf("scoket fails\n"); return 1; } else { printf("scoket success\n"); } return 0; }
编译代码:gcc -o socket socket_demo.c
代码运行结果:
[root@localhost socket]# ./socket
scoket success
[root@localhost socket]#