Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

linux socket

作者:风中孤狼   发布日期:2026-03-04   浏览:95

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.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};
    const char *hello = "Hello from server";

    // 创建 socket 文件描述符
    if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
        perror("socket failed");
        exit(EXIT_FAILURE);
    }

    // 设置端口复用选项
    if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) {
        perror("setsockopt failed");
        exit(EXIT_FAILURE);
    }

    // 绑定 IP 地址和端口
    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("bind failed");
        close(server_fd);
        exit(EXIT_FAILURE);
    }

    // 监听连接请求
    if (listen(server_fd, 3) < 0) {
        perror("listen failed");
        close(server_fd);
        exit(EXIT_FAILURE);
    }

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

    // 读取客户端消息
    read(new_socket, buffer, BUFFER_SIZE);
    printf("Received from client: %s\n", buffer);

    // 发送消息给客户端
    send(new_socket, hello, strlen(hello), 0);
    printf("Hello message sent\n");

    // 关闭 socket
    close(new_socket);
    close(server_fd);

    return 0;
}

解释说明:

  1. 创建 Socket:使用 socket() 函数创建一个 TCP 套接字。AF_INET 表示使用 IPv4 协议,SOCK_STREAM 表示使用 TCP 流式套接字。
  2. 设置 Socket 选项:通过 setsockopt() 函数设置端口复用选项,允许服务器在关闭后立即重新绑定同一端口。
  3. 绑定地址和端口:使用 bind() 函数将套接字绑定到指定的 IP 地址和端口。
  4. 监听连接请求:调用 listen() 函数使套接字进入监听状态,等待客户端连接。
  5. 接受客户端连接:使用 accept() 函数接受来自客户端的连接请求,并返回一个新的文件描述符用于通信。
  6. 读取和发送数据:通过 read()send() 函数与客户端进行数据交互。
  7. 关闭 Socket:完成通信后,调用 close() 函数关闭套接字。

这段代码实现了一个简单的 TCP 服务器,能够接收客户端连接并与其交换数据。

上一篇:linux 查看用户组

下一篇:linux打包命令

大家都在看

linux常用命令查询端口是否正常

linux 发送邮件

linux长ping命令

linux groupadd

linux关机命令行

linux 安装 gcc

linux重启oracle命令

linux把一个文件夹移动到另一个文件夹里

linux查看系统运行时间

linux搭建sftp

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站