秀杰空间

  • 首页
  • 心情笔记
  • Linux/Unix C/C++
  • PHP
  • 我的项目
秀杰笔记
做些有意义的事情
  1. 首页
  2. Linux/Unix C/C++
  3. 正文

从sockaddr_storage结构中取IP地址和端口

2020年11月3日 301点热度 0人点赞 0条评论
// Convert a struct sockaddr address to a string, IPv4 and IPv6:
char *get_ip_str(const struct sockaddr *sa, char *s, size_t maxlen, unsigned short *port)
{
    if (NULL == s || NULL == port) {
        return NULL;
    }
    switch(sa->sa_family) {
        case AF_INET:
            inet_ntop(AF_INET, &(((struct sockaddr_in *)sa)->sin_addr),
                    s, maxlen);
            *port = ntohs(((struct sockaddr_in *)sa)->sin_port);
            break;

        case AF_INET6:
            inet_ntop(AF_INET6, &(((struct sockaddr_in6 *)sa)->sin6_addr),
                    s, maxlen);
            *port = ntohs(((struct sockaddr_in6 *)sa)->sin6_port);
            break;

        default:
            strncpy(s, "Unknown AF", maxlen);
            return NULL;
    }
    return s;
}
char *get_ip_str(struct sockaddr_storage *sa, char *s, size_t maxlen, unsigned short *port) {
    return get_ip_str((const struct sockaddr *)sa, s, maxlen, port);
}
标签: 暂无
最后更新:2020年11月3日

秀杰

做些有意义的事情

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

秀杰

做些有意义的事情

标签聚合
tuxedo select 分布式 socket mac ubuntu UNIX环境高级编程 pb zookeeper epoll protobuf
最新 热点 随机
最新 热点 随机
C++使用protobuf快速入门简明教程 Mac安装Brew(Homebrew)国内镜像源加速 从sockaddr_storage结构中取IP地址和端口 [转载]分布式之数据库和缓存双写一致性方案解析 TPS和QPS的区别和理解 2018最新可靠好用的DNS服务器地址汇总
UNIX环境高级编程学习之第十六章网络IPC:套接字 - 非阻塞的Socket通信Select模型(多路复用), 实用Socket通信模板。 Tuxedo FML根据fldid判断字段类型 UNIX环境高级编程学习之第十五章进程间通信 - 系统V 共享内存使用(使用信号灯保护共享内存) [CPP Utility Class] C++ 通用工具类库 UNIX环境高级编程学习之第七章进程环境-环境变量表读取/添加/修改/删除 UNIX环境高级编程学习之第六章系统数据文件和信息 用链表的形式读出一个服务器的远程用户登入登出信息
京ICP备11019155号-2

COPYRIGHT © 2023 个人笔记. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang