C - 关于套接字编程中这个 strncpy 函数的问题



im 目前正在为我的网络扫描仪应用程序在 Portscanner 上工作,并在 C 中带有套接字。我找到了这段代码,我想了解strncpy在这里的确切作用是什么!有人可以为我的网络编程初学者解释这段代码,谢谢..

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

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

    根据 strncpy

    如果源 C 字符串的末尾(由 空字符(在复制 num 字符之前找到, 目标用零填充,直到总共 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);

好吧,看起来它将 sa 位设置为零。它可能相当于

memset(&sa, 0, sizeof sa);

或者,如果您的编译器允许,您可以使用

struct sockaddr_in sa = {.sin_family = AF_INET };

并摆脱

sa.sin_family = AF_INET;

相关内容

  • 没有找到相关文章

最新更新