c - 关于套接字编程中这个 strncpy 函数的问题
问题描述
我目前正在使用 c 中的套接字为我的网络扫描仪应用程序开发 portscanner。我找到了这段代码,我想了解 strncpy 在这里的确切作用是什么!有人可以为我的网络编程初学者解释这段代码吗,谢谢..
解决方案
strncpy((char*)&sa, "", sizeof sa);
在这里,作者试图设置结构
0
的每个字节sa
。根据strncpy
如果在复制 num 个字符之前找到源 C 字符串的结尾(由空字符表示),则用零填充目标,直到总共写入了 num 个字符。
如果我是你,我会这样做。
memset(&sa, 0 , sizeof sa);
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);
推荐阅读
- android - 哪个更适合 Android MVVM 按功能打包或按层打包?
- javascript - 过滤表数据,并删除过滤列
- java - 合并排序过程
- r - emmeans 使用权重来解释一个因素中的样本量差异
- javascript - 获取输入值问题 JavaScript
- reactjs - 在创建可重用的 react-redux 包期间出现“在”错误的上下文中找不到“存储”
- sql - 表中 ID 的最大计数
- python - 检查 Pandas DataFrame 单元格是否包含某些字符串
- python-3.x - 我使用 Open CV 使用 Python 获取图像差异,但代码不起作用
- bash - 使用 bash 脚本迭代地运行带有参数的 C++ 程序