117.info
人生若只如初见

怎样设置Linux sockaddr的值

在 Linux 中,sockaddr 是一个通用结构体,用于表示套接字地址

  1. IPv4 地址和端口:
#include 
#include 
#include 
#include 
#include 
#include 

int main() {
    int sockfd;
    struct sockaddr_in server_addr, client_addr;
    socklen_t addr_len = sizeof(client_addr);

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

    // 设置服务器地址
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(8080);
    server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");

    // 绑定套接字
    if (bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
        perror("bind");
        exit(EXIT_FAILURE);
    }

    // 监听连接
    if (listen(sockfd, 10) < 0) {
        perror("listen");
        exit(EXIT_FAILURE);
    }

    // 接受客户端连接
    if (accept(sockfd, (struct sockaddr *)&client_addr, &addr_len) < 0) {
        perror("accept");
        exit(EXIT_FAILURE);
    }

    // 关闭套接字
    close(sockfd);

    return 0;
}
  1. IPv6 地址和端口:
#include 
#include 
#include 
#include 
#include 
#include 

int main() {
    int sockfd;
    struct sockaddr_in6 server_addr, client_addr;
    socklen_t addr_len = sizeof(client_addr);

    // 创建套接字
    sockfd = socket(AF_INET6, SOCK_STREAM, 0);
    if (sockfd < 0) {
        perror("socket");
        exit(EXIT_FAILURE);
    }

    // 设置服务器地址
    server_addr.sin6_family = AF_INET6;
    server_addr.sin6_port = htons(8080);
    server_addr.sin6_addr = in6addr_any;

    // 绑定套接字
    if (bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
        perror("bind");
        exit(EXIT_FAILURE);
    }

    // 监听连接
    if (listen(sockfd, 10) < 0) {
        perror("listen");
        exit(EXIT_FAILURE);
    }

    // 接受客户端连接
    if (accept(sockfd, (struct sockaddr *)&client_addr, &addr_len) < 0) {
        perror("accept");
        exit(EXIT_FAILURE);
    }

    // 关闭套接字
    close(sockfd);

    return 0;
}

在这两个示例中,我们分别设置了 IPv4 和 IPv6 地址和端口。你可以根据需要修改这些值。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe959AzsKAAdQBFQ.html

推荐文章

  • Linux Dolphin怎样提高效率

    Dolphin是KDE桌面环境自带的文件管理器,它提供了许多功能来提高文件管理的效率。以下是一些提高Dolphin效率的方法:
    Dolphin的基本操作 文件搜索:Dolphin...

  • Linux Dolphin性能如何优化

    Dolphin是一个基于Linux的操作系统,而不是一个特定的软件或应用程序,因此无法直接进行性能优化。不过,我可以提供一些一般性的Linux系统性能优化建议,这些建议...

  • Linux Dolphin使用技巧有哪些

    Dolphin是KDE桌面环境下的文件管理器,而不是Linux终端的命令行工具。因此,关于Linux终端的技巧并不适用于Dolphin浏览器。不过,我可以提供一些Dolphin浏览器的...

  • Linux swap空间不足如何解决

    当Linux系统的swap空间不足时,可以采取以下几种方法来解决:
    调整swappiness参数 查看当前swappiness值:可以使用命令 cat /proc/sys/vm/swappiness 来查看...

  • Linux sockaddr包含哪些信息

    在Linux中,sockaddr是一个通用结构体,用于表示网络地址 sa_family:地址族,表示地址的类型。常见的地址族有AF_INET(IPv4)和AF_INET6(IPv6)。
    sa_por...

  • Linux sockaddr如何获取

    在Linux系统中,sockaddr结构体用于表示网络地址 使用socket()函数创建一个套接字: #include int sockfd = socket(AF_INET, SOCK_STREAM, 0); 使用sockaddr_in结...

  • 如何理解Linux sockaddr的含义

    在 Linux 系统中,sockaddr 是一个通用结构体,用于表示网络地址
    sockaddr 结构体通常包含以下几个成员: sa_family:表示地址族,用于区分不同类型的网络地...

  • Linux sockaddr结构是怎样

    sockaddr结构是Linux系统中用于表示网络地址和数据报头的通用结构
    struct sockaddr { sa_family_t sa_family; // 地址族,如AF_INET(IPv4)或AF_INET6(IP...