﻿<?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>语源科技BlogJava-日积月累</title><link>http://www.blogjava.net/jim443/</link><description>千里之行始于足下</description><language>zh-cn</language><lastBuildDate>Thu, 07 May 2026 05:51:37 GMT</lastBuildDate><pubDate>Thu, 07 May 2026 05:51:37 GMT</pubDate><ttl>60</ttl><item><title>socket编程</title><link>http://www.blogjava.net/jim443/archive/2009/12/15/306080.html</link><dc:creator>fullfill</dc:creator><author>fullfill</author><pubDate>Tue, 15 Dec 2009 15:24:00 GMT</pubDate><guid>http://www.blogjava.net/jim443/archive/2009/12/15/306080.html</guid><wfw:comment>http://www.blogjava.net/jim443/comments/306080.html</wfw:comment><comments>http://www.blogjava.net/jim443/archive/2009/12/15/306080.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jim443/comments/commentRss/306080.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jim443/services/trackbacks/306080.html</trackback:ping><description><![CDATA[<div id="related_topics">相关文章: <span class="close"><a title="关闭" onclick="$('related_topics').hide();$('hunter_banner').style.width='780px';return false;" href="http://www.javaeye.com/topic/396107#">&nbsp;</a></span>
<ul>
    <li><a title="一个FTP客户的简单的代码流程+简要总结分析" href="http://www.javaeye.com/topic/181819" target="_blank">一个FTP客户的简单的代码流程+简要总结分析</a>
    <li><a title="Socket(一)" href="http://www.javaeye.com/topic/352490" target="_blank">Socket(一)</a>
    <li><a title="linux socket 学习笔记" href="http://www.javaeye.com/topic/249382" target="_blank">linux socket 学习笔记</a> </li>
</ul>
<br />
<span>推荐圈子: <a href="http://dlang.group.javaeye.com/" target="_blank">D语言</a></span> <br />
<a href="http://www.javaeye.com/wiki/topic/396107" target="_blank">更多相关推荐</a> </div>
<script type="text/javascript">
                $('hunter_recommended').setStyle({cssFloat: 'left', width: '557px'})
                new Draggable("related_topics");
              </script><span style="color: cyan">1、Socket服务器端：</span> <br />
Socket服务器端流程如下：加载套接字-&gt;创建监听的套接字-&gt;绑定套接字-&gt;监听套接字-&gt;处理客户端相关请求。 <br />
下面是孙鑫VC详解里面的服务器端的例子： <br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">C++代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://www.javaeye.com/topic/396107#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" /></a></div>
</div>
<ol class="dp-cpp">
    <li><span><span class="preprocessor">#include&nbsp;&lt;Winsock2.h&gt; </span><span>&nbsp;&nbsp;</span></span>
    <li><span class="preprocessor">#include&nbsp;&lt;stdio.h&gt; </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span class="keyword">void</span><span>&nbsp;main() &nbsp;&nbsp;</span></span>
    <li><span>{ &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//加载套接字 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="datatypes">WORD</span><span>&nbsp;wVersionRequested; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;WSADATA&nbsp;wsaData; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="datatypes">int</span><span>&nbsp;err; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;wVersionRequested=MAKEWORD(1,1); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;err=WSAStartup(wVersionRequested,&amp;wsaData); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(err!=0) &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(LOBYTE(wsaData.wVersion)!=1|| &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HIBYTE(wsaData.wVersion)!=1) &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WSACleanup(); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//创建监听的套接字 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SOCKET&nbsp;sockSrv=socket(AF_INET,SOCK_STREAM,0); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SOCKADDR_IN&nbsp;addrSrv; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);</span><span class="comment">//把U_LONG的主机字节顺序转换为TCP/IP网络字节顺序 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;addrSrv.sin_family=AF_INET; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;addrSrv.sin_port=htons(6000); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//绑定套接字 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;bind(sockSrv,(SOCKADDR*)&amp;addrSrv,</span><span class="keyword">sizeof</span><span>(SOCKADDR)); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//将套接字设置为监听模式，准备接受用户请求 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;listen(sockSrv,5); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SOCKADDR_IN&nbsp;addrClient; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="datatypes">int</span><span>&nbsp;len=</span><span class="keyword">sizeof</span><span>(SOCKADDR); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span class="string">"%s\n"</span><span>,</span><span class="string">"welcome,the&nbsp;serve&nbsp;is&nbsp;started..."</span><span>); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">while</span><span>&nbsp;(1) &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//等待用户请求到来 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SOCKET&nbsp;sockConn=accept(sockSrv,(SOCKADDR*)&amp;addrClient,&amp;len); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="datatypes">char</span><span>&nbsp;sendBuf[100]; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprintf(sendBuf,</span><span class="string">"welcome&nbsp;%s&nbsp;to&nbsp;http://unblue2008.javaeye.com"</span><span>,inet_ntoa(addrClient.sin_addr)); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//发送数据 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(sockConn,sendBuf,100,0); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="datatypes">char</span><span>&nbsp;revBuf[100]; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//接收数据 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;recv(sockConn,revBuf,100,0); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//打印接受数据 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span class="string">"%s\n"</span><span>,revBuf); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//关闭套接字 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closesocket(sockConn); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>}&nbsp;&nbsp;</span> </li>
</ol>
</div>
<pre class="C++" style="display: none" name="code">#include &lt;Winsock2.h&gt;
#include &lt;stdio.h&gt;
void main()
{
//加载套接字
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested=MAKEWORD(1,1);
err=WSAStartup(wVersionRequested,&amp;wsaData);
if (err!=0)
{
return;
}
if (LOBYTE(wsaData.wVersion)!=1||
HIBYTE(wsaData.wVersion)!=1)
{
WSACleanup();
return;
}
//创建监听的套接字
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//把U_LONG的主机字节顺序转换为TCP/IP网络字节顺序
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);
//绑定套接字
bind(sockSrv,(SOCKADDR*)&amp;addrSrv,sizeof(SOCKADDR));
//将套接字设置为监听模式，准备接受用户请求
listen(sockSrv,5);
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
printf("%s\n","welcome,the serve is started...");
while (1)
{
//等待用户请求到来
SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&amp;addrClient,&amp;len);
char sendBuf[100];
sprintf(sendBuf,"welcome %s to http://unblue2008.javaeye.com",inet_ntoa(addrClient.sin_addr));
//发送数据
send(sockConn,sendBuf,100,0);
char revBuf[100];
//接收数据
recv(sockConn,revBuf,100,0);
//打印接受数据
printf("%s\n",revBuf);
//关闭套接字
closesocket(sockConn);
}
}
</pre>
<br />
<span style="color: red">注意：需要包含头文件&lt;Winsock2.h&gt;，并且在工程设置的link里面加上ws32_2.dll</span> <br />
<span style="color: cyan">如果在VC中还有一个简单的加载套接字的方法：</span> <br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">C++代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://www.javaeye.com/topic/396107#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" /></a></div>
</div>
<ol class="dp-cpp">
    <li><span><span class="keyword">if</span><span>&nbsp;(!AfxSocketInit()) &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AfxMessageBox(</span><span class="string">"套接字加载失败！"</span><span>); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="keyword">false</span><span>; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span> </li>
</ol>
</div>
<pre class="C++" style="display: none" name="code">if (!AfxSocketInit())
{
AfxMessageBox("套接字加载失败！");
return false;
}
</pre>
<br />
这个不需要包含上面注里面的头文件和ws2_32.lib库就可以实现加载套接字。 <br />
<span style="color: cyan">2、Socket客户端：</span> <br />
Socket客户端同样需要先加载套接字，然后创建套接字，不过之后不用绑定和监听了，而是直接连接服务器，发送相关请求。 <br />
同样贴出孙鑫VC详解里面的客户端的例子：（不是我偷懒，是人家实在写的太好，无法超越<img alt="" src="http://www.javaeye.com/images/smiles/icon_wink.gif" /> ） <br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">C++代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://www.javaeye.com/topic/396107#"><img alt="复制代码" src="http://www.javaeye.com/images/icon_copy.gif" /></a></div>
</div>
<ol class="dp-cpp">
    <li><span><span class="preprocessor">#include&nbsp;&lt;Winsock2.h&gt; </span><span>&nbsp;&nbsp;</span></span>
    <li><span class="preprocessor">#include&nbsp;&lt;stdio.h&gt; </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span class="keyword">void</span><span>&nbsp;main() &nbsp;&nbsp;</span></span>
    <li><span>{ &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//加载套接字 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="datatypes">WORD</span><span>&nbsp;wVersionRequested; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;WSADATA&nbsp;wsaData; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="datatypes">int</span><span>&nbsp;err; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;wVersionRequested=MAKEWORD(1,1); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;err=WSAStartup(wVersionRequested,&amp;wsaData); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(err!=0) &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(LOBYTE(wsaData.wVersion)!=1|| &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HIBYTE(wsaData.wVersion)!=1) &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WSACleanup(); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//创建套接字 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SOCKET&nbsp;sockClient=socket(AF_INET,SOCK_STREAM,0); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SOCKADDR_IN&nbsp;addrSrv; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;addrSrv.sin_addr.S_un.S_addr=inet_addr(</span><span class="string">"127.0.0.1"</span><span>);</span><span class="comment">//把U_LONG的主机字节顺序转换为TCP/IP网络字节顺序 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;addrSrv.sin_family=AF_INET; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;addrSrv.sin_port=htons(6000); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//向服务器发送请求 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;connect(sockClient,(SOCKADDR*)&amp;addrSrv,</span><span class="keyword">sizeof</span><span>(SOCKADDR)); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//接受数据 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="datatypes">char</span><span>&nbsp;recBuf[100]; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;recv(sockClient,recBuf,100,0); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span class="string">"%s\n"</span><span>,recBuf); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//发送数据 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;send(sockClient,</span><span class="string">"this&nbsp;is&nbsp;扈修非"</span><span>,strlen(</span><span class="string">"this&nbsp;is&nbsp;扈修非"</span><span>)+1,0); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//关闭套接字 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;closesocket(sockClient); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;WSACleanup(); &nbsp;&nbsp;</span>
    <li><span>}&nbsp;&nbsp;</span> </li>
</ol>
</div>
<pre class="C++" style="display: none" name="code">#include &lt;Winsock2.h&gt;
#include &lt;stdio.h&gt;
void main()
{
//加载套接字
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested=MAKEWORD(1,1);
err=WSAStartup(wVersionRequested,&amp;wsaData);
if (err!=0)
{
return;
}
if (LOBYTE(wsaData.wVersion)!=1||
HIBYTE(wsaData.wVersion)!=1)
{
WSACleanup();
return;
}
//创建套接字
SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");//把U_LONG的主机字节顺序转换为TCP/IP网络字节顺序
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);
//向服务器发送请求
connect(sockClient,(SOCKADDR*)&amp;addrSrv,sizeof(SOCKADDR));
//接受数据
char recBuf[100];
recv(sockClient,recBuf,100,0);
printf("%s\n",recBuf);
//发送数据
send(sockClient,"this is 扈修非",strlen("this is 扈修非")+1,0);
//关闭套接字
closesocket(sockClient);
WSACleanup();
}
</pre>
<br />
<span style="color: red">需要加载的头文件和库同上</span> <br />
<img src ="http://www.blogjava.net/jim443/aggbug/306080.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jim443/" target="_blank">fullfill</a> 2009-12-15 23:24 <a href="http://www.blogjava.net/jim443/archive/2009/12/15/306080.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>