⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 5-1.html

📁 WinSock编程规范及应用
💻 HTML
📖 第 1 页 / 共 5 页
字号:
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">  WSAENOTSOCK</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:描述字不是一个套接口。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">  WSAEINVAL</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:套接口未用</FONT><FONT SIZE=3>bind()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>捆绑。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">参见:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">  bind(), socket(), getpeername().</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY"> </P>
</FONT><B><FONT FACE="宋体" LANG="ZH-CN" SIZE=5><P><A NAME="_Toc336626837"><A NAME="_Toc336792920"><A NAME="_Toc336793396"></FONT><FONT SIZE=5>5.1.7 getsockopt()</A></A></A></P>
</B></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">简述:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">  </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>获取一个套接口选项。</P>
<P ALIGN="JUSTIFY"></P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">  #include &lt;winsock.h&gt;</P>
<P ALIGN="JUSTIFY">  </P>
<P ALIGN="JUSTIFY">  int PASCAL FAR getsockopt( SOCKET s, int level, int optname,</P>
<P ALIGN="JUSTIFY">  char FAR* optval, int FAR* optlen);</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">  s</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:一个标识套接口的描述字。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">  level</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:选项定义的层次。支持的层次仅有</FONT><FONT SIZE=3>SOL_SOCKET</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>和</FONT><FONT SIZE=3>IPPROTO_TCP</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">  optname</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:需获取的套接口选项。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">  optval</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:指针,指向存放所获得选项值的缓冲区。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">  optlen</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:指针,指向</FONT><FONT SIZE=3>optval</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>缓冲区的长度值。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">注释:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">  getsockopt()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>函数用于获取任意类型、任意状态套接口的选项当前值,并把结果存入</FONT><FONT SIZE=3>optval</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。在不同协议层上存在选项,但往往是在最高的“套接口”层次上,设置选项影响套接口的操作,诸如操作的阻塞与否、包的选径方式、带外数据的传送等。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">  </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>被选中选项的值放在</FONT><FONT SIZE=3>optval</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>缓冲区中。</FONT><FONT SIZE=3>optlen</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>所指向的整形数在初始时包含缓冲区的长度,在调用返回时被置为实际值的长度。对</FONT><FONT SIZE=3>SO_LINGER</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>选项而言,相当于</FONT><FONT SIZE=3>linger</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>结构的大小,对其他选项来说,是一个整形数的大小。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">  </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>如果未进行</FONT><FONT SIZE=3>setsockopt()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>调用,则</FONT><FONT SIZE=3>getsockopt()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>返回系统缺省值。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">  getsockopt()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>支持下列选项。其中“类型”栏指出了</FONT><FONT SIZE=3>optval</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>所指向的值。仅有</FONT><FONT SIZE=3>TCP_NODELAY</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>选项使用了</FONT><FONT SIZE=3>IPPROTO_TCP</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>层;其余选项均使用</FONT><FONT SIZE=3>SOL_SOCKET</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>层。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">选项</FONT><FONT SIZE=3>        </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>类型</FONT><FONT SIZE=3>        </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>意义</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">SO_ACCEPTCONN   BOOL        </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>套接口正在用</FONT><FONT SIZE=3>listen()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>监听。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">SO_BROADCAST    BOOL        </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>套接口设置为传送广播信息。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">SO_DEBUG    BOOL        </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>允许调试。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">SO_DONTLINER    BOOL        </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>若为真,则</FONT><FONT SIZE=3>SO_LINGER</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>选项被禁止。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">SO_DONTROUTE    BOOL        </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>禁止选径。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">SO_ERROR    int     </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>获取错误状态并清除。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">SO_KEEPALIVE    BOOL        </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>发送“保持活动”信息。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">SO_LINGER   struct linger FAR*  </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>返回当前各</FONT><FONT SIZE=3>linger</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>选项。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">SO_OOBINLINE    BOOL        </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>在普通数据流中接收带外数据。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">SO_RCVBUF   int     </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>接收缓冲区大小。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">SO_REUSEADDR    BOOL        </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>套接口能和一个已在使用中的地址捆绑。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">SO_SNDBUF   int     </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>发送缓冲区大小。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">SO_TYPE     int     </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>套接口类型(如</FONT><FONT SIZE=3>SOCK_STREAM</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>)。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">TCP_NODELAY BOOL        </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>禁止发送合并的</FONT><FONT SIZE=3>Nagle</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>算法。</P>
<P ALIGN="JUSTIFY"></P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">getsockopt()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>不支持的</FONT><FONT SIZE=3>BSD</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>选项有:</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">选项名</FONT><FONT SIZE=3>      </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>类型</FONT><FONT SIZE=3>        </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>意义</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">SO_RCVLOWAT int     </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>接收低级水印。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">SO_RCVTIMEO int     </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>接收超时。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">SO_SNDLOWAT int     </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>发送低级水印。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">SO_SNDTIMEO int     </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>发送超时。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">IP_OPTIONS          </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>获取</FONT><FONT SIZE=3>IP</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>头中选项。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">TCP_MAXSEG  int     </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>获取</FONT><FONT SIZE=3>TCP</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>最大段的长度。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">  </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>用一个未被支持的选项去调用</FONT><FONT SIZE=3>getsockopt()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>将会返回一个</FONT><FONT SIZE=3>WSAENOPROTOOPT</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>错误代码(可用</FONT><FONT SIZE=3>WSAGetLastError()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>获取)。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">返回值:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">  </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>若无错误发生,</FONT><FONT SIZE=3>getsockopt()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>返回</FONT><FONT SIZE=3>0</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。否则的话,返回</FONT><FONT SIZE=3>SOCKET_ERROR</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>错误,应用程序可通过</FONT><FONT SIZE=3>WSAGetLastError()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>获取相应错误代码。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">错误代码:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">  WSANOTINITIALISED</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:在使用此</FONT><FONT SIZE=3>API</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>之前应首先成功地调用</FONT><FONT SIZE=3>WSAStartup()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">  WSAENETDOWN</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:</FONT><FONT SIZE=3>WINDOWS</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>套接口实现检测到网络子系统失效。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">  WSAEFAULT</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:</FONT><FONT SIZE=3>optlen</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>参数非法。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">  WSAEINPROGRESS</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:一个阻塞的</FONT><FONT SIZE=3>WINDOWS</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>套接口调用正在运行中。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">  WSAENOPROTOOPT</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:未知或不支持选项。其中,</FONT><FONT SIZE=3>SOCK_STREAM</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>类型的套接口不支持</FONT><FONT SIZE=3>SO_BROADCAST</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>选项,</FONT><FONT SIZE=3>SOCK_DGRAM</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>类型的套接口不支持</FONT><FONT SIZE=3>SO_ACCEPTCONN</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>、</FONT><FONT SIZE=3>SO_DONTLINGER </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>、</FONT><FONT SIZE=3>SO_KEEPALIVE</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>、</FONT><FONT SIZE=3>SO_LINGER</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>和</FONT><FONT SIZE=3>SO_OOBINLINE</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>选项。</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">  WSAENOTSOCK</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:描述字不是一个套接口。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">参见:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">  setsockopt(), WSAAsyncSelect(), socket().</P>
<P ALIGN="JUSTIFY"> </P>
</FONT><B><FONT FACE="宋体" LANG="ZH-CN" SIZE=5><P><A NAME="_Toc336626838"><A NAME="_Toc336792921"><A NAME="_Toc336793397"></FONT><FONT SIZE=5>5.1.8 htonl()</A></A></A></P>
</B></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">简述:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">  </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>将主机的无符号长整形数转换成网络字节顺序。</P>
<P ALIGN="JUSTIFY"></P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">  #include &lt;winsock.h&gt;</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">  u_long PASCAL FAR htonl( u_long hostlong);</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">  hostlong</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>:主机字节顺序表达的</FONT><FONT SIZE=3>32</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>位数。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">注释:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">  </FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>本函数将一个</FONT><FONT SIZE=3>32</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>位数从主机字节顺序转换成网络字节顺序。</P>
<P ALIGN="JUSTIFY"></P>
<P ALIGN="JUSTIFY">返回值:</P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">  htonl()</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3>返回一个网络字节顺序的值。</P>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -