服务器编程基础API
创建socket
socket介绍
#include <sys/types.h>
#include <sys/socket.h>
int socket(int domain, int type, int protocol);
domain参数
domain参数告诉系统是用哪个底层协议。
支持的协议有:
AF_UNIX
AF_LOCAL
AF_INET
AF_AX25
AF_IPX
AF_APPLETALK
AF_X25
AF_INET6
AF_DECnet
AF_KEY
AF_NETLINK
AF_PACKET
AF_RDS
其中常用的是TCP/IP的协议族参数AF_INET,AF_INET6,UNIX本地族协议参数AF_UNIX 。
type参数
type指定服务类型常用的服务类型:
参数 | 服务类型 |
---|---|
SOCK_STREAM | 字节流套接字 |
SOCK_DGRAM | 数据报套接字 |
SOCK_SEQPACKET | 有序分组套接字 |
SOCK_RAW | 原始套接字 |
SOCK_RDM | 可靠的UDP套接字 |
SOCK_PACKET | 数据包套接字 |
protocol参数
protocol参数是在前两个参数构成的协议集合下在选择一个具体的协议,不过这个值通常是唯一的,前面两个参数的值已经决定的它的值,几乎所有的情况都把它设置为0。
返回值
- 成功:返回socket文件描述符。
- 失败:返回-1,并设置errno,参数是负数错误码是22,参数是非负数错误码是93。
测试代码:
#include <iostream>
#include <sys/types.h>
#include <sys/socket.h>
using namespace std;
int main()
{
int pro;
while (cout << "输入