C – 初始化SOCKADDR_IN

我正在处理一些静态分析缺陷,这个问题导致我出现问题.
SOCKADDR_IN m_stLclAddr;

SOCKADDR_IN is a member of the WinSock API

缺陷是说我没有初始化以下内容

> m_stLclAddr.sin_port
> m_stLclAddr.sin_zero
> m_stLclAddr.sin_addr
> m_stLclAddr.sin_family

我对熟悉WinSock API并不是很熟悉,但我做了一些研究,我只是想知道以下代码行是否会使用认值初始化m_stLclAddr?

m_stLclAddr = { 0 };

解决方法

m_stLclAddr = {0}将第一次将所有内容设置为零(不一定是认值或您实际想要做的事情). memset(& m_stLclAddr,sizeof(SOCKADDR_IN));将m_stLclAddr中的所有内容设置为零,不仅用于初始化,还用于连续调用.

我想你会想做这样的事情:

local_sin.sin_family = AF_INET;
local_sin.sin_port = htons (PORTNUM);
local_sin.sin_addr.s_addr = htonl (INADDR_ANY);

如图所示:http://msdn.microsoft.com/en-us/library/aa454002.aspx

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...