socket()函数是C++网络编程中一个用于创建套接字的函数。它的原型如下:
int socket(int domain, int type, int protocol);
其中,domain表示地址族,type表示套接字类型,protocol表示协议。
常用的地址族有AF_INET(IPv4)、AF_INET6(IPv6)等,套接字类型有SOCK_STREAM(流套接字)、SOCK_DGRAM(数据报套接字)等,协议有IPPROTO_TCP(TCP协议)、IPPROTO_UDP(UDP协议)等。
socket的第三个参数为0表示根据传入的第二个参数(SOCK_STREAM)自动选择协议类型,一般是TCP协议。如果第三个参数为非0值,则需要显式指定协议类型,例如使用IPPROTO_UDP指定UDP协议。
代码示例:
#include <iostream>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main() {
int sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sockfd == -1) {
std::cerr << "socket error" << std::endl;
return -1;
}
std::cout << "socket created" << std::endl;
close(sockfd);
return 0;
}
这段代码创建了一个TCP套接字,如果创建失败则输出错误信息。最后关闭套接字并返回0。