Linux网络编程入门 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

第一个函数是socket函数。 socket函数的Linux头文件以及函数定义如下:

#include<sys/socket.h>
int socket(int domain, int type, int protocal);

该函数含义是创建一个套接字,可以这样比喻理解,小明家里安装固定电话,第一步首先得去买个电话机,才能完成后续通信。因此,在网络编程前,我们需要调用socket创建个套接字(类似购买个电话机)。

函数参数以及返回值如下:

/**
  * 函数作用:创建一个socket
  *
  * @param domain 告诉系统使用哪个底层协议族,IPv4还是IPv6
  * @param type 指定服务类型
  * @param protocal 一般默认为0
  * @return 函数执行成功返回一个socket文件描述符,失败返回-1
  */
  int socket(int domain, int type, int protocal)

第1个参数domain指定协议族,取值为PF_INET,用于IPv4;取值为PF_INET6,用于IPv6,本教程取值PF_INET。

第2个参数type指定服务类型,取值SOCK_STREAM(流服务,适用TCP协议)或者SOCK_UGRAM(数据包服务,使用UDP协议)

写个程序创建个socket吧

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

int main()
{
    int server_socket;

    server_socket = socket(PF_INET, SOCK_STREAM, 0);
    if (server_socket == -1) {
        perror("socket create error");
    }

    printf("socket is %d\n", server_socket);

    return 0;
}

第2行引入头文件sys/socket.h,socket函数的头文件。

第8行调用socket函数创建个TCP socket(type取值为SOCK_STREAM)。

在右侧建立个c文件,试编写个程序:创建一个socket。