Linux 下基于 socket 实现 TCP 服务端的示例代码

2024-12-29 00:24:53   小编

在当今的计算机技术领域,Linux 操作系统因其稳定性和高效性而备受青睐。在 Linux 环境下,通过使用 Socket 实现 TCP 服务端是网络编程中的常见任务。以下为您呈现相关的示例代码及详细解释。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>

int main() {
    int server_fd, new_socket;
    struct sockaddr_in address;
    int addrlen = sizeof(address);
    int port = 8080;

    // 创建套接字
    if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
        perror("创建套接字失败");
        exit(EXIT_FAILURE);
    }

    // 初始化地址结构
    address.sin_family = AF_INET;
    address.sin_addr.s_addr = INADDR_ANY;
    address.sin_port = htons(port);

    // 绑定套接字到指定端口
    if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) {
        perror("绑定失败");
        exit(EXIT_FAILURE);
    }

    // 监听连接
    if (listen(server_fd, 5) < 0) {
        perror("监听失败");
        exit(EXIT_FAILURE);
    }

    printf("等待连接...\n");

    // 接受连接
    if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t *)&addrlen)) < 0) {
        perror("接受连接失败");
        exit(EXIT_FAILURE);
    }

    printf("连接建立\n");

    // 接收数据
    char buffer[1024] = {0};
    int valread = read(new_socket, buffer, 1024);
    printf("%s\n", buffer);

    // 发送响应
    char *response = "Hello from server";
    send(new_socket, response, strlen(response), 0);

    // 关闭套接字
    close(new_socket);
    close(server_fd);

    return 0;
}

在上述代码中,首先使用 socket 函数创建一个 TCP 套接字。然后,通过 bind 函数将套接字与特定的地址和端口进行绑定。接着,使用 listen 函数开始监听连接请求。

当有客户端发起连接时,accept 函数会接受连接并返回一个新的套接字用于与该客户端进行通信。之后,使用 read 函数接收客户端发送的数据,并通过 send 函数向客户端发送响应。

最后,关闭与客户端通信的套接字以及服务器端的监听套接字。

通过这段示例代码,您可以初步了解在 Linux 下基于 Socket 实现 TCP 服务端的基本流程和关键步骤。希望这能为您在 Linux 网络编程的学习和实践中提供有益的参考。

TAGS: 代码示例 Linux 编程 Socket 编程 TCP 服务端

欢迎使用万千站长工具!

Welcome to www.zzTool.com