欣然起航 发表于 2024-8-19 20:10:03

Linux学习/TCP Socket通信

案例

案例一

server.c
#include// 标准输入输出#include//提供通用的工具函数,例如内存分配和程序退出。#include//提供字符串处理函数。#include//提供对 POSIX 操作系统 API 的访问,包括对文件描述符的操作。#include//提供与 Internet 地址转换相关的函数和数据结构。#define PORT 8082 //PORT 是服务器监听的端口号,设置为 8082。#define BUFFER_SIZE 1024 //定义了缓冲区的大小,用于接收数据,设置为 1024 字节。int main(){    int server_fd; //用于存储服务器套接字的文件描述符    int new_socket; //客户端连接的套接字描述符    struct sockaddr_in address; //sockaddr_in 结构体,表示服务器的地址信息。    int opt = 1; //用于设置套接字选项(端口重用)。    int addrlen = sizeof(address); //服务器地址结构的大小。    char buffer = {0}; //用于接收客户端发送的消息,并初始化为零。    /*使用 socket 函数创建一个套接字。参数 AF_INET 指定使用 IPv4,SOCK_STREAM 表示使用 TCP 协议。   *如果创建失败,函数返回值为 -1,输出错误信息并退出程序。*/    if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0)    {      perror("server create failed\n");      exit(EXIT_FAILURE);    }    /*使用 setsockopt 函数允许套接字重用地址。   *设置选项 SO_REUSEADDR,这使得即使在套接字关闭后,新的套接字也可以绑定到同一端口。   *如果设置选项失败,输出错误信息并退出程序。*/    if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)))    {      perror("setsockopt");      exit(EXIT_FAILURE);    }    // 配置服务器地址结构    address.sin_family = AF_INET; //设置 address 的地址家族为 AF_INET,表示 IPv4。    // address.sin_addr.s_addr = INADDR_ANY; //使用 INADDR_ANY,表示服务器将监听所有可用的网络接口。    /*将字符串格式的 IP 地址("127.0.0.1")转换为二进制格式并存储在 serv_addr.sin_addr 中。这个IP地址指的是本机。*/    if (inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr)
页: [1]
查看完整版本: Linux学习/TCP Socket通信