[socket] 刘傲天带你C++写socket之创建一个socket - 百年刘傲天

in Ubuntusocket with 0 comment

创建一个socket

需要引入的头文件

#include <sys/types.h>
#include <sys/socket.h>

函数原型

int socket(int domain, int type, int protocol);

domain指定底层协议族,对于TCP/IP来说应该设置为AF_INET(或者PF_INET)这两者并没有任何区别,据说最初设计初衷是一个AF支持多个PF但最终没有实现。
type指定服务类型,这也就是选择协议是(SOCK_STREAM)TCP或UDP(SOCK_DGRAM)
protocol参数是在前两个参数的协议集合下,再选择一个具体的协议,不过这个值通常都是0,表示使用默认协议
函数成功后返回一个socket文件描述符,失败则返回-1,并设置全局静态变量errno,如果想知道具体错误信息则可以查看error

指定socket地址

上边我们只是创建了一个socket,但是并没有确定他要绑定的IP和端口,就好像我们拿了一把铁锹但并没有说去哪挖挖什么一样

需要引入的头文件

#include <sys/types.h>
#include <sys/socket.h>

函数原型

int bind(int sockfd, const struct sockaddr* my_addr, socklen_t addrlen);

bind将my_addr所绑定的信息绑定到sockfd文件描述符,addrlen指出该socket地址的长度
bind成功时返回0 失败返回-1并设置errno

常见错误

EACCES 被绑定的地址是受保护的地址
EADDRINUSE 被绑定的地址正在使用中

Responses