IT袋

当前位置:主页 > 经验教程 > 系统教程 >

Unix域套接字—基于文件的Socket通信

Unix域套接字—基于文件的Socket通信(2)

时间:2024-01-09 15:59:36 来源:IT袋 作者:马勇
导读:Unix域套接字—基于文件的Socket通信,client.c 文件: #include sys/socket.h>#include sys/un.h>#include stdio.h>#include stdlib.h>#include unistd.h>#define SOCKET_PATH "example.sock"#define BUFFER_SIZE 1024int main() { int client_socket

Unix域套接字—基于文件的Socket通信

client.c文件:

#include <sys/socket.h>
#include <sys/un.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define SOCKET_PATH "example.sock"
#define BUFFER_SIZE 1024
int main() {
    int client_socket;
    struct sockaddr_un server_address;
    char buffer[BUFFER_SIZE];
    ssize_t bytes_received;
    // 创建套接字
    client_socket = socket(AF_UNIX, SOCK_STREAM, 0);
    if (client_socket == -1) {
        perror("Socket creation failed");
        exit(EXIT_FAILURE);
    }
    // 设置服务器地址结构
    memset(&server_address, 0, sizeof(server_address));
    server_address.sun_family = AF_UNIX;
    strncpy(server_address.sun_path, SOCKET_PATH, sizeof(server_address.sun_path) - 1);
    // 连接服务器
    if (connect(client_socket, (struct sockaddr*)&server_address, sizeof(server_address)) == -1) {
        perror("Connection failed");
        exit(EXIT_FAILURE);
    }
    // 发送数据
    const char* message = "Hello, Server!";
    if (send(client_socket, message, strlen(message), 0) == -1) {
        perror("Send failed");
        exit(EXIT_FAILURE);
    }
    printf("发送消息: %s\n", message);
    // 接收响应
    bytes_received = recv(client_socket, buffer, sizeof(buffer), 0);
    if (bytes_received == -1) {
        perror("Receive failed");
        exit(EXIT_FAILURE);
    }
    buffer[bytes_received] = '\0'; // 添加字符串结束符
    printf("服务器响应: %s\n", buffer);
    // 关闭套接字
    close(client_socket);
    return 0;
}

效果展示:

Unix域套接字—基于文件的Socket通信

client/server

大家可以根据实际的需求,对这个Demo进行修改,通过这个例子我们可以基本认识到通过文件建立Unix域套接字的通信过程。

以上就是IT袋网带来的Unix域套接字—基于文件的Socket通信的具体介绍,供网友们借鉴参考。

相关阅读