将端口号转换为字符串

时间:2014-03-26 10:51:17

标签: linux network-programming

我正在尝试将整数形式的端口号转换为字符串,以传递给getaddrinfo()调用。我的代码看起来像这样:

#define PORT_SIZE 5

void convert(int port) {
   char service[PORT_SIZE+1];
....
....
    memset(service, '\0', PORT_SIZE+1);
    snprintf(service, PORT_SIZE+1, "%d", port);
...
...
}

由于linux盒子上的最大端口大小是65535,所以将数组大小设置为5个字节来存储端口号是否正确?

谢谢!

2 个答案:

答案 0 :(得分:1)

没关系,如果结果字符串长于PORT_SIZE个字符,剩余的字符将被丢弃而不存储,只计算函数返回的值,因此不会发生缓冲区溢出。并且在写入内容后会自动附加终止空字符,因此memset()是多余的 或者只是致电itoa (port, buffer, 10)

答案 1 :(得分:0)

我不会依赖那种限制。也许你的前卫生活10年? 20?在amd128上运行? IPV8? int有多少位?那么有多少个端口?