首页 > 解决方案 > 关于套接字编程中这个 strncpy 函数的问题

问题描述

我目前正在使用 c 中的套接字为我的网络扫描仪应用程序开发 portscanner。我找到了这段代码,我想了解 strncpy 在这里的确切作用是什么!有人可以为我的网络编程初学者解释这段代码吗,谢谢..

标签: csocketsserverclientstrncpy

解决方案


  1. strncpy((char*)&sa, "", sizeof sa);

    在这里,作者试图设置结构0的每个字节sa

    根据strncpy

    如果在复制 num 个字符之前找到源 C 字符串的结尾(由空字符表示),则用零填充目标,直到总共写入了 num 个字符。

    如果我是你,我会这样做。

    memset(&sa, 0 , sizeof sa);


  1. strncpy((char*)&sa.sin_addr, (char*) host->h_addr, sizeof sa.sin_addr);

    在这里,作者试图将char *h_addr保存第一个主机地址的地址复制到s_addr.

    如果我是你,我会这样做。

    sa.sin_addr.s_addr = inet_addr(host->h_addr);


推荐阅读