C – 初始化SOCKADDR_IN

前端之家收集整理的这篇文章主要介绍了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

原文链接:https://www.f2er.com/c/119212.html

猜你在找的C&C++相关文章