﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-xyjzsh-随笔分类-完成端口</title><link>http://www.cppblog.com/xyjzsh/category/15706.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 17 Dec 2010 07:11:37 GMT</lastBuildDate><pubDate>Fri, 17 Dec 2010 07:11:37 GMT</pubDate><ttl>60</ttl><item><title>WSAStartup函数的使用</title><link>http://www.cppblog.com/xyjzsh/archive/2010/12/17/136737.html</link><dc:creator> 呆人</dc:creator><author> 呆人</author><pubDate>Fri, 17 Dec 2010 06:47:00 GMT</pubDate><guid>http://www.cppblog.com/xyjzsh/archive/2010/12/17/136737.html</guid><wfw:comment>http://www.cppblog.com/xyjzsh/comments/136737.html</wfw:comment><comments>http://www.cppblog.com/xyjzsh/archive/2010/12/17/136737.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xyjzsh/comments/commentRss/136737.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xyjzsh/services/trackbacks/136737.html</trackback:ping><description><![CDATA[<pre class=syntax xml:space="preserve">int WSAStartup(
__in          WORD <em><a class=synParam onclick=showTip(this) href=""><u><font color=#0000ff>wVersionRequested</font></u></a></em>,
__out         LPWSADATA <em><a class=synParam onclick=showTip(this) href=""><u><font color=#0000ff>lpWSAData</font></u></a></em>
);</pre>
<pre class=syntax xml:space="preserve">
<h4><strong><span>WSAStartup</span></strong><strong></strong></h4>
<p><strong><span>格<span>&nbsp;&nbsp;</span>式：<span> int PASCAL FAR WSAStartup( WORD wVersionRequested,&nbsp; LPWSADATA lpWSAData );</span></span></strong><strong></strong></p>
<p><span>参<span>&nbsp;&nbsp;</span>数： </span><span>&nbsp;</span><span>wVersionRequested </span><span>欲使用的<span> Windows Sockets API </span>版本</span></p>
<p><span>lpWSAData&nbsp;&nbsp;</span><span>指向<span> WSADATA </span>资料的指标</span></p>
<p><span>传回值： </span><span>&nbsp;</span><span>成功 <span>&#8211; 0</span></span></p>
<p><span>&nbsp;&nbsp;</span><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>失败<span> - WSASYSNOTREADY / WSAVERNOTSUPPORTED /&nbsp;&nbsp;WSAEINVAL</span></span></p>
<p><span>说明： 此函式「必须」是应用程式呼叫到<span> Windows Sockets DLL </span>函式中的第一个，也唯有此函式呼叫成功後，才可以再呼叫其他<span> Windows&nbsp;&nbsp;Sockets DLL </span>的函式。此函式亦让使用者可以指定要使用的<span> Windows Sockets API </span>版本，及获取设计者的一些资讯。程式中我们要用<span> Winsock 1.1</span>，所以我们在程式中有一段为：</span></p>
<p><span>WSAStartup((WORD)((1&lt;&lt;8)|1),(LPWSADATA) &amp;WSAData) </span></p>
<p><span>其中<span> ((WORD)((1&lt;&lt;8)|1) </span>表示我们要用的是<span> Winsock </span>「<span>1.1</span>」版本，而<span>WSAData </span>则是用来储存由系统传回的一些有关此一<span> Winsock Stack </span>的资料。</span></p>
</pre>
<pre class=syntax xml:space="preserve">
<p>The <strong>WSAStartup</strong> function initiates use of the Winsock DLL by a process.<br><br><br><br><br><br><br><br><br><br><br>在使用WSAStartup的使用出现了下面的问题:<br></p>
源码：
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">stdafx.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br>#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">windows.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;WSADATA&nbsp;wsa</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">{</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">};<br>&nbsp;&nbsp;&nbsp;&nbsp;WSAStartup(MAKEWORD(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">),</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">wsa);<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}<br></span></div>
</pre>
<pre class=syntax xml:space="preserve">出现的错误信息：</pre>
<pre style="COLOR: red" class=syntax xml:space="preserve">错误&nbsp;1&nbsp;error LNK2019: 无法解析的外部符号 <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#95;&#87;&#83;&#65;&#83;&#116;&#97;&#114;&#116;&#117;&#112;&#64;&#56;">_WSAStartup@8</a>，该符号在函数 _main 中被引用&nbsp;CompletePortDemo.obj&nbsp;CompletePortDemo<br></pre>
<pre style="COLOR: red" class=syntax xml:space="preserve">解决方法:添加#pragma&nbsp;comment(lib,"ws2_32.lib")</pre>
<pre style="COLOR: red" class=syntax xml:space="preserve">正确代码:</pre>
<pre style="COLOR: red" class=syntax xml:space="preserve">
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">stdafx.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br>#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">windows.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>#pragma&nbsp;&nbsp;&nbsp;&nbsp;comment(lib,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ws2_32.lib</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)<br><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;WSADATA&nbsp;wsa</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">{</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">};<br>&nbsp;&nbsp;&nbsp;&nbsp;WSAStartup(MAKEWORD(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">),</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">wsa);<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}<br></span></div>
</pre>
<img src ="http://www.cppblog.com/xyjzsh/aggbug/136737.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xyjzsh/" target="_blank"> 呆人</a> 2010-12-17 14:47 <a href="http://www.cppblog.com/xyjzsh/archive/2010/12/17/136737.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>