意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

Linux下使用socket实现TCP服务端的示例代码

来源:佚名 编辑:佚名
2024-09-13 21:30:02

在Linux系统中,使用socket编程实现TCP服务端是网络开发中的基础知识。本文将通过一个简单的示例代码,展示如何创建一个基本的TCP服务器。

代码示例


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>

#define PORT 8080
#define BUFFER_SIZE 1024

int main() {
    int server_fd, new_socket;
    struct sockaddr_in address;
    int opt = 1;
    int addrlen = sizeof(address);
    char buffer[BUFFER_SIZE] = {0};
    
    // 创建socket文件描述符
    if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
        perror("socket failed");
        exit(EXIT_FAILURE);
    }
    
    // 设置socket选项
    if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) {
        perror("setsockopt");
        exit(EXIT_FAILURE);
    }
    
    address.sin_family = AF_INET;
    address.sin_addr.s_addr = INADDR_ANY;
    address.sin_port = htons(PORT);
    
    // 绑定socket到指定端口
    if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) {
        perror("bind failed");
        exit(EXIT_FAILURE);
    }
    
    // 开始监听连接
    if (listen(server_fd, 3) < 0) {
        perror("listen");
        exit(EXIT_FAILURE);
    }
    
    printf("Server listening on port %dn", PORT);
    
    while(1) {
        // 接受新的连接
        if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen)) < 0) {
            perror("accept");
            exit(EXIT_FAILURE);
        }
        
        // 读取客户端消息
        int valread = read(new_socket, buffer, BUFFER_SIZE);
        printf("Received message: %sn", buffer);
        
        // 发送响应
        char *response = "Hello from server";
        send(new_socket, response, strlen(response), 0);
        printf("Response sentn");
        
        close(new_socket);
    }
    
    return 0;
}

代码解释

这个示例代码实现了一个简单的TCP服务器,它可以接受客户端连接,接收消息并发送响应。代码的主要步骤包括:

  • 创建socket
  • 设置socket选项
  • 绑定socket到指定端口
  • 开始监听连接
  • 接受新的连接
  • 读取客户端消息
  • 发送响应
  • 关闭连接

这个服务器会一直运行,不断接受新的连接。每次接受到新连接后,它会读取客户端发送的消息,打印到控制台,然后发送一个固定的响应"Hello from server"回客户端。

使用方法

要使用这个代码,请按照以下步骤操作:

  1. 将代码保存为 server.c
  2. 编译代码:gcc server.c -o server
  3. 运行服务器:./server

服务器将开始在8080端口监听连接。你可以使用 telnet 或者编写一个简单的客户端程序来测试这个服务器。

结语

这个示例代码展示了如何在Linux系统中使用socket编程实现一个基本的TCP服务端。通过理解和修改这个代码,你可以开发更复杂的网络应用程序。记住,在实际的生产环境中,你需要考虑更多的因素,如错误处理、并发连接、安全性等。

本网站发布或转载的文章均来自网络,其原创性以及文中表达的观点和判断不代表本网站。
上一篇: Linux中搭建DNS域名解析服务器的详细过程 下一篇: Linux防火墙的配置全过程:保护您的系统安全