﻿<?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++博客-NoNews-随笔分类-改进</title><link>http://www.cppblog.com/hannosogno/category/17679.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 08 Sep 2011 15:52:15 GMT</lastBuildDate><pubDate>Thu, 08 Sep 2011 15:52:15 GMT</pubDate><ttl>60</ttl><item><title>.Net多线程总结</title><link>http://www.cppblog.com/hannosogno/archive/2011/09/08/155385.html</link><dc:creator>NoNews</dc:creator><author>NoNews</author><pubDate>Thu, 08 Sep 2011 14:46:00 GMT</pubDate><guid>http://www.cppblog.com/hannosogno/archive/2011/09/08/155385.html</guid><wfw:comment>http://www.cppblog.com/hannosogno/comments/155385.html</wfw:comment><comments>http://www.cppblog.com/hannosogno/archive/2011/09/08/155385.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/hannosogno/comments/commentRss/155385.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/hannosogno/services/trackbacks/155385.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 基础内容来自:http://www.cnblogs.com/yizhu2000/在此基础上加工和整理而成！Part 1 :.Net提供了许多多线程编程工具,可能是因为太多了,所以掌握起来总是有一些头疼,我在这里讲讲我总结的一些多线程编程的经验,希望对大家有帮助&nbsp;不需要传递参数,也不需要返回参数我们知道启动一个线程最直观的办法是使用Thread类,具体步骤如下ThreadStart thr...&nbsp;&nbsp;<a href='http://www.cppblog.com/hannosogno/archive/2011/09/08/155385.html'>阅读全文</a><img src ="http://www.cppblog.com/hannosogno/aggbug/155385.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/hannosogno/" target="_blank">NoNews</a> 2011-09-08 22:46 <a href="http://www.cppblog.com/hannosogno/archive/2011/09/08/155385.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++封装好的曲线拟合</title><link>http://www.cppblog.com/hannosogno/archive/2011/09/08/155387.html</link><dc:creator>NoNews</dc:creator><author>NoNews</author><pubDate>Thu, 08 Sep 2011 14:46:00 GMT</pubDate><guid>http://www.cppblog.com/hannosogno/archive/2011/09/08/155387.html</guid><wfw:comment>http://www.cppblog.com/hannosogno/comments/155387.html</wfw:comment><comments>http://www.cppblog.com/hannosogno/archive/2011/09/08/155387.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/hannosogno/comments/commentRss/155387.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/hannosogno/services/trackbacks/155387.html</trackback:ping><description><![CDATA[<span class="Apple-style-span" style="color: #283769; font-family: arial; font-size: 13px; line-height: 19px; background-color: #ffffff; ">用C++封装好的曲线拟合算法，现在已经封装的非常好用而具有很大的伸缩性了！<div>封装好的类用起来很方便，用一个vector初始化一下，直接就可以得到拟合的曲线的系数了。<br /><div></div><div></div><div>//file :&nbsp;curve_fitting.h</div><div><div class="sites-embed-align-left-wrapping-off" style="display: block; clear: both; text-align: left; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: 0px; "><div class="sites-embed-border-on sites-embed sites-embed-full-width" style="margin-top: 0px; margin-right: auto; margin-bottom: 5px; margin-left: 0px; display: block !important; clear: both; color: #283769; font-size: 12px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: #c7c7c7; border-right-color: #c7c7c7; border-bottom-color: #c7c7c7; border-left-color: #c7c7c7; width: 732px; "><h4 class="sites-embed-title" style="font-size: 1.2em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; font-family: arial !important; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-top-color: #c7c7c7; border-right-color: #c7c7c7; border-bottom-color: #c7c7c7; border-left-color: #c7c7c7; color: #445aa9; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #eeeeee; font: normal normal bold 1.2em/normal 'Trebuchet MS', arial, sans-serif; border-width: initial; border-color: initial; background-position: initial initial; background-repeat: initial initial; ">curve_fitting.h</h4><div class="sites-embed-content sites-embed-type-text" style="text-align: left; overflow-x: hidden; overflow-y: hidden; "><div class="sites-embed-content-textbox" style="padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; "><div dir="ltr"><div><code style="color: #006000; ">#pragma once</code></div><div></div><div><code style="color: #006000; ">#include &lt;math.h&gt;&nbsp;</code></div><div><code style="color: #006000; ">#include &lt;iostream&gt;</code></div><div><code style="color: #006000; ">#include &lt;vector&gt;</code></div><div><code style="color: #006000; ">#include &lt;algorithm&gt;</code></div><div><code style="color: #006000; ">#include &lt;cassert&gt;</code></div><div><code style="color: #006000; ">#include &lt;exception&gt;</code></div><div></div><div><code style="color: #006000; ">using namespace std;</code></div><div></div><div><code style="color: #006000; ">namespace curve_fit</code></div><div><code style="color: #006000; ">{</code></div><div></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">struct cf_Point</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">double x;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">double y;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">cf_Point(double _x, double _y) : x(_x), y(_y)</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{}</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">};</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">class cf_Matrix2D</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">public:</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">explicit cf_Matrix2D(int _height, int _width) : width(_width), height(_height)</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">for (int i = 0; i &lt; _height; ++i)</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">double* d = new double[_width]();</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">data.push_back(d);</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">~cf_Matrix2D()</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">for (int i = 0; i &lt; height; ++i)</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">delete[] data[i];</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">double&amp; at(int x, int y)</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">assert(x &lt; height &amp;&amp; y &lt; width &amp;&amp; "out of range in Matrix2D");</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">return data[x][y];</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">double* operator[](int i)</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">return data[i];</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">const double* const operator[](int i) const</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">return data[i];</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">int get_width() const</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">return width;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">int get_height() const</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">return height;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">private:</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">vector&lt;double*&gt; data;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">int width;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">int height;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">};</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">class curve_fitting</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">public:</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">explicit curve_fitting(const vector&lt;cf_Point&gt;&amp; init_points, int _fit_scale = 3)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">: points(init_points)</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">, fit_scale(_fit_scale)</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">, W(1), PRECISION(0.00001)</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">number_of_points = init_points.size();</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">assert(number_of_points &gt; 0 &amp;&amp; "要拟合的原始点个数不能为0");</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}</code><span style="white-space: pre; "> </span></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">vector&lt;double&gt; get_coefficient_vector()</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">if (coefficient.size() == 0)</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">calc_coefficient();</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">assert(coefficient.size() == fit_scale + 1 &amp;&amp; "返回的系数个数应该等于阶数+1但实际上不等于，这里发生了未知错误");</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">return coefficient;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">protected:</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">private:</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">void &nbsp; calc_coefficient();</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">void &nbsp; mutiple(cf_Matrix2D&amp; a, cf_Matrix2D&amp; b, cf_Matrix2D&amp; c) ;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">void &nbsp; matrix_trans(cf_Matrix2D&amp; a, cf_Matrix2D&amp; b) ;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">void &nbsp; get_A(cf_Matrix2D&amp; matrix_A) ;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">void &nbsp; convert(cf_Matrix2D&amp; argu,int &nbsp; n) ;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">void &nbsp; compute(cf_Matrix2D&amp; argu,int n, vector&lt;double&gt;&amp; root);</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">void &nbsp; get_y(cf_Matrix2D&amp; trans_A,vector&lt;double&gt;&amp; y,int n);</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">void &nbsp; cons_formula(cf_Matrix2D&amp; coef_A, vector&lt;double&gt;&amp; y, cf_Matrix2D&amp; coef_form);</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">int number_of_points;</code><span style="white-space: pre; "> </span><code style="color: #006000; ">//用于曲线拟合的已知点的个数</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">int fit_scale;</code><span style="white-space: pre; "> </span><code style="color: #006000; ">//拟合曲线的阶数</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">int W;</code><span style="white-space: pre; "> </span><code style="color: #006000; ">//权函数</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">double PRECISION;</code><span style="white-space: pre; "> </span><code style="color: #006000; ">//精度</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">vector&lt;cf_Point&gt; points;</code><span style="white-space: pre; "> </span><code style="color: #006000; ">//已知的顶点</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">vector&lt;double&gt; coefficient;</code><span style="white-space: pre; "> </span><code style="color: #006000; ">//保存得到的系数</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">};</code></div><div></div><div><code style="color: #006000; ">}</code></div></div></div></div></div></div></div><div></div><div></div><div>//file : curve_fitting.cpp</div><div><div class="sites-embed-align-left-wrapping-off" style="display: block; clear: both; text-align: left; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: 0px; "><div class="sites-embed-border-on sites-embed sites-embed-full-width" style="margin-top: 0px; margin-right: auto; margin-bottom: 5px; margin-left: 0px; display: block !important; clear: both; color: #283769; font-size: 12px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: #c7c7c7; border-right-color: #c7c7c7; border-bottom-color: #c7c7c7; border-left-color: #c7c7c7; width: 732px; "><h4 class="sites-embed-title" style="font-size: 1.2em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; font-family: arial !important; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-top-color: #c7c7c7; border-right-color: #c7c7c7; border-bottom-color: #c7c7c7; border-left-color: #c7c7c7; color: #445aa9; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #eeeeee; font: normal normal bold 1.2em/normal 'Trebuchet MS', arial, sans-serif; border-width: initial; border-color: initial; background-position: initial initial; background-repeat: initial initial; ">curve_fitting.cpp</h4><div class="sites-embed-content sites-embed-type-text" style="text-align: left; overflow-x: hidden; overflow-y: hidden; "><div class="sites-embed-content-textbox" style="padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; "><div dir="ltr"><div><code style="color: #006000; ">#include "stdafx.h"</code></div><div></div><div><code style="color: #006000; ">#include "curve_fitting.h"</code></div><div></div><div></div><div><code style="color: #006000; ">namespace curve_fit</code></div><div><code style="color: #006000; ">{</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">void &nbsp; curve_fitting::mutiple(cf_Matrix2D&amp; a, cf_Matrix2D&amp; b, cf_Matrix2D&amp; c)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">double &nbsp; res=0;&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">int &nbsp; i,j,k;&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">for(i=0;i &lt;fit_scale+1;i++)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">for(j=0;j &lt;fit_scale+1;j++)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">res=0;&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">for(k=0;k &lt;number_of_points;k++)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">res += a.at(i, k) * b.at(k, j);</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">c.at(i, j)=res;&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}&nbsp;</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">void &nbsp; curve_fitting::matrix_trans(cf_Matrix2D&amp; a, cf_Matrix2D&amp; b)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">int &nbsp; i,j;&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">for(i=0;i &lt;number_of_points;i++)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">for(j=0;j &lt;fit_scale+1;j++)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">b.at(j, i) = a.at(i, j);</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}&nbsp;</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">void &nbsp; curve_fitting::get_A(cf_Matrix2D&amp; matrix_A)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">int &nbsp; i,j;&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">for(i=0;i &lt;number_of_points;i++)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">for(j=0;j &lt;fit_scale+1;j++)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">matrix_A.at(i, j) = W * pow(points[i].x, j);&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}&nbsp;</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">void &nbsp; curve_fitting::convert(cf_Matrix2D&amp; argu,int n)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">int &nbsp; i,j,k,p,t;&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">double &nbsp; rate,temp;&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">for(i=1;i &lt;n;i++)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">for(j=i;j &lt;n;j++)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">if(argu.at(i-1, i-1) == 0)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">for(p=i;p &lt;n;p++)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">if(argu.at(p, i-1)!=0)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">break;&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">if(p==n)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">throw exception("方程组无解! curve_fitting::convert");</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">for(t=0;t &lt;n+1;t++)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">temp=argu.at(i-1, t);&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">argu.at(i-1, t)=argu.at(p, t);&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">argu.at(p, t)=temp;&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">rate=argu.at(j, i-1)/argu.at(i-1, i-1);&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">for(k=i-1;k &lt;n+1;k++)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">argu.at(j, k)-=argu.at(i-1, k)*rate;&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">if(fabs(argu.at(j, k)) &lt;=PRECISION)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">argu.at(j, k)=0;&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}&nbsp;</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">void &nbsp; curve_fitting::compute(cf_Matrix2D&amp; argu,int n, vector&lt;double&gt;&amp; root)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">int &nbsp; i,j;&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">double &nbsp; temp;&nbsp;</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">root.clear();</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">for (int i = 0; i &lt; fit_scale + 1; ++i)</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">root.push_back(0);</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">for(i=n-1;i&gt;=0;i--)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">temp=argu.at(i, n);&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">for(j=n-1;j&gt; i;j--)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">temp-=argu.at(i, j) * root[j];&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">root[i]=temp/argu.at(i, i);&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">if (root[i] &lt; PRECISION)</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">root[i] = 0;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}&nbsp;</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">void &nbsp; curve_fitting::get_y(cf_Matrix2D&amp; trans_A,vector&lt;double&gt;&amp; y,int n)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">int &nbsp; i,j;&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">double &nbsp; temp;&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">for(i=0;i &lt;n;i++)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">temp=0;&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">for(j=0;j &lt;number_of_points;j++)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">temp+=trans_A.at(i, j) * points[j].y;&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">y[i]=temp;&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}&nbsp;</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">void &nbsp; curve_fitting::cons_formula(cf_Matrix2D&amp; coef_A, vector&lt;double&gt;&amp; y, cf_Matrix2D&amp; coef_form)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">int &nbsp; i,j;&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">for(i=0;i &lt;fit_scale+1;i++)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">for(j=0;j &lt;fit_scale+2;j++)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">if(j==fit_scale+1)&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">coef_form.at(i, j) = y[i];&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">else&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">coef_form.at(i, j)=coef_A.at(i, j);&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}&nbsp;</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">void curve_fitting::calc_coefficient()</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">vector&lt;double&gt; y(fit_scale + 1);</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">cf_Matrix2D matrix_A(number_of_points, fit_scale+1);</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">cf_Matrix2D trans_A(fit_scale + 1, number_of_points);</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">cf_Matrix2D coef_A(fit_scale + 1, fit_scale + 1);</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">cf_Matrix2D coef_formu(fit_scale + 1, fit_scale + 2);</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">get_A(matrix_A);&nbsp;</code><span style="white-space: pre; "> </span></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">matrix_trans(matrix_A , trans_A);</code><span style="white-space: pre; "> </span></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">mutiple(trans_A , matrix_A , coef_A);&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">get_y(trans_A, y, fit_scale+1);&nbsp;</code><span style="white-space: pre; "> </span></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">cons_formula(coef_A , y , coef_formu);&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">convert(coef_formu , fit_scale+1);&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">compute(coef_formu , fit_scale+1 , coefficient);&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}</code></div><div></div><div><code style="color: #006000; ">}</code></div></div></div></div></div></div></div><div></div><div>//file : main.cpp</div><div><div class="sites-embed-align-left-wrapping-off" style="display: block; clear: both; text-align: left; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: 0px; "><div class="sites-embed-border-on sites-embed sites-embed-full-width" style="margin-top: 0px; margin-right: auto; margin-bottom: 5px; margin-left: 0px; display: block !important; clear: both; color: #283769; font-size: 12px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: #c7c7c7; border-right-color: #c7c7c7; border-bottom-color: #c7c7c7; border-left-color: #c7c7c7; width: 732px; "><h4 class="sites-embed-title" style="font-size: 1.2em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; font-family: arial !important; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-top-color: #c7c7c7; border-right-color: #c7c7c7; border-bottom-color: #c7c7c7; border-left-color: #c7c7c7; color: #445aa9; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #eeeeee; font: normal normal bold 1.2em/normal 'Trebuchet MS', arial, sans-serif; border-width: initial; border-color: initial; background-position: initial initial; background-repeat: initial initial; ">main.cpp</h4><div class="sites-embed-content sites-embed-type-text" style="text-align: left; overflow-x: hidden; overflow-y: hidden; "><div class="sites-embed-content-textbox" style="padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; text-align: left; "><div dir="ltr"><div><code style="color: #006000; ">#include "stdafx.h"</code></div><div></div><div></div><div><code style="color: #006000; ">#include &lt;iostream&gt;</code></div><div><code style="color: #006000; ">#include &lt;vector&gt;</code></div><div></div><div><code style="color: #006000; ">#include "curve_fitting.h"</code></div><div></div><div><code style="color: #006000; ">using namespace std;</code></div><div><code style="color: #006000; ">using namespace curve_fit;</code></div><div></div><div><code style="color: #006000; ">void &nbsp; main()&nbsp;</code></div><div><code style="color: #006000; ">{&nbsp;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">vector&lt; cf_Point &gt; v;</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">v.push_back(cf_Point(-2, -4));</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">v.push_back(cf_Point(-1, 0));</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">v.push_back(cf_Point(0, 0));</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">v.push_back(cf_Point(1, 2));</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">v.push_back(cf_Point(2, 12));</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">v.push_back(cf_Point(3, 36));</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">curve_fitting cf(v);</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">vector&lt;double&gt; coefficient = cf.get_coefficient_vector();</code></div><div></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">cout &lt;&lt; "f(x) = " &lt;&lt; coefficient[0] &lt;&lt; " * X";</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">for (size_t i = 1; i &lt; coefficient.size(); ++i)</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">{</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">cout &lt;&lt; " &nbsp;+ &nbsp;" &lt;&lt; coefficient[i] &lt;&lt; " * X^" &lt;&lt; i &lt;&lt; " ";</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">}</code></div><div><span style="white-space: pre; "> </span><code style="color: #006000; ">cout &lt;&lt; endl;</code></div><div></div><div><code style="color: #006000; ">}</code></div></div></div></div></div></div></div></div></span><img src ="http://www.cppblog.com/hannosogno/aggbug/155387.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/hannosogno/" target="_blank">NoNews</a> 2011-09-08 22:46 <a href="http://www.cppblog.com/hannosogno/archive/2011/09/08/155387.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>救急代码：简易的Socket通信</title><link>http://www.cppblog.com/hannosogno/archive/2011/08/01/152227.html</link><dc:creator>NoNews</dc:creator><author>NoNews</author><pubDate>Mon, 01 Aug 2011 10:11:00 GMT</pubDate><guid>http://www.cppblog.com/hannosogno/archive/2011/08/01/152227.html</guid><wfw:comment>http://www.cppblog.com/hannosogno/comments/152227.html</wfw:comment><comments>http://www.cppblog.com/hannosogno/archive/2011/08/01/152227.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/hannosogno/comments/commentRss/152227.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/hannosogno/services/trackbacks/152227.html</trackback:ping><description><![CDATA[非常简单的Socket通信代码，上次使用过的，还花了一些时间，保留以适用于偶而需要通信的情况救急用。<br />以下的四段代码完成了使用简单的TCP/UDP协议来进行通信的全部所需！<br /><br /><br /><div style="background-color: #eeeeee; font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp; 1</span>&nbsp;<span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;2</span>&nbsp;<span style="color: #000000; ">#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">stdlib.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;3</span>&nbsp;<span style="color: #000000; ">#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">stdio.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;4</span>&nbsp;<span style="color: #000000; ">#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">conio.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;5</span>&nbsp;<span style="color: #000000; ">#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">winsock2.h</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;6</span>&nbsp;<span style="color: #000000; ">#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 /></span><span style="color: #008080; ">&nbsp;&nbsp;7</span>&nbsp;<span style="color: #000000; ">#pragma&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 /></span><span style="color: #008080; ">&nbsp;&nbsp;8</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">using</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; ">&nbsp;std;<br /></span><span style="color: #008080; ">&nbsp;&nbsp;9</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;10</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;sbBroadcast(</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;11</span>&nbsp;<span style="color: #000000; ">{<br /></span><span style="color: #008080; ">&nbsp;12</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;SOCKET&nbsp;listener;<br /></span><span style="color: #008080; ">&nbsp;13</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;sockaddr_in&nbsp;listen_adress;<br /></span><span style="color: #008080; ">&nbsp;14</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;WSADATA&nbsp;wsdata;<br /></span><span style="color: #008080; ">&nbsp;15</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;BOOL&nbsp;optval;<br /></span><span style="color: #008080; ">&nbsp;16</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">启动SOCKET库，版本为2.0</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;17</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;WSAStartup(</span><span style="color: #000000; ">0x0202</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">wsdata);<br /></span><span style="color: #008080; ">&nbsp;18</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;optval</span><span style="color: #000000; ">=</span><span style="color: #000000; ">TRUE;<br /></span><span style="color: #008080; ">&nbsp;19</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;20</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">然后赋值给两个地址，一个用来绑定套接字，一个用来从网络上的广播地址接收消息；</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;21</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;listen_adress.sin_family</span><span style="color: #000000; ">=</span><span style="color: #000000; ">AF_INET;<br /></span><span style="color: #008080; ">&nbsp;22</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;listen_adress.sin_addr.s_addr</span><span style="color: #000000; ">=</span><span style="color: #000000; ">INADDR_ANY;<br /></span><span style="color: #008080; ">&nbsp;23</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;listen_adress.sin_port</span><span style="color: #000000; ">=</span><span style="color: #000000; ">htons(</span><span style="color: #000000; ">9290</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">&nbsp;24</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;listener</span><span style="color: #000000; ">=</span><span style="color: #000000; ">socket(AF_INET,SOCK_DGRAM,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">&nbsp;25</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">设置该套接字为广播类型，<br /></span><span style="color: #008080; ">&nbsp;26</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">setsockopt(listener,SOL_SOCKET,SO_BROADCAST,(char&nbsp;FAR&nbsp;*)&amp;optval,sizeof(optval));</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;27</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;bind(listener,(sockaddr&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">listen_adress,</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(sockaddr_in));<br /></span><span style="color: #008080; ">&nbsp;28</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;listen(listener,&nbsp;</span><span style="color: #000000; ">5</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">&nbsp;29</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;30</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;buf[</span><span style="color: #000000; ">256</span><span style="color: #000000; ">];<br /></span><span style="color: #008080; ">&nbsp;31</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;32</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{</span><span style="color: #008000; ">//</span><span style="color: #008000; ">从广播地址接收消息，注意用来绑定的地址和接收消息的地址是不一样的</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;33</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sockaddr_in&nbsp;from;<br /></span><span style="color: #008080; ">&nbsp;34</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;fromlength&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(SOCKADDR);<br /></span><span style="color: #008080; ">&nbsp;35</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;rev&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;recvfrom(listener,buf,&nbsp;</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(buf),</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,(</span><span style="color: #0000FF; ">struct</span><span style="color: #000000; ">&nbsp;sockaddr&nbsp;FAR&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">from,(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;FAR&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">fromlength);<br /></span><span style="color: #008080; ">&nbsp;36</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(rev&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;SOCKET_ERROR)<br /></span><span style="color: #008080; ">&nbsp;37</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;38</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;num&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">&nbsp;39</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%s(%d)&nbsp;:&nbsp;%s\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,inet_ntoa(from.sin_addr),&nbsp;num,&nbsp;buf);&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">在此处输出检查到的IP,对吗????</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;40</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZeroMemory(buf,&nbsp;</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(buf));<br /></span><span style="color: #008080; ">&nbsp;41</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">&nbsp;42</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;43</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;44</span>&nbsp;<span style="color: #000000; ">}<br /></span><span style="color: #008080; ">&nbsp;45</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;46</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;fbBroadcast(</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;47</span>&nbsp;<span style="color: #000000; ">{<br /></span><span style="color: #008080; ">&nbsp;48</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;SOCKET&nbsp;s;<br /></span><span style="color: #008080; ">&nbsp;49</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;sockaddr_in&nbsp;addrto;<br /></span><span style="color: #008080; ">&nbsp;50</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;WSADATA&nbsp;wsdata;<br /></span><span style="color: #008080; ">&nbsp;51</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;BOOL&nbsp;bsocket;<br /></span><span style="color: #008080; ">&nbsp;52</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">smsg</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">127.0.0.1&amp;9290&amp;255.255.255.255&amp;9290&amp;1&amp;HelloMessage</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">&nbsp;53</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;WSAStartup(</span><span style="color: #000000; ">0x0202</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">wsdata);<br /></span><span style="color: #008080; ">&nbsp;54</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;55</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;s</span><span style="color: #000000; ">=</span><span style="color: #000000; ">WSASocket(AF_INET,SOCK_DGRAM,&nbsp;IPPROTO_UDP,NULL,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,WSA_FLAG_OVERLAPPED);<br /></span><span style="color: #008080; ">&nbsp;56</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;bsocket</span><span style="color: #000000; ">=</span><span style="color: #000000; ">TRUE;<br /></span><span style="color: #008080; ">&nbsp;57</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">然后赋值给地址，用来从网络上的广播地址接收消息；</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;58</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;addrto.sin_family</span><span style="color: #000000; ">=</span><span style="color: #000000; ">AF_INET;<br /></span><span style="color: #008080; ">&nbsp;59</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;addrto.sin_addr.s_addr</span><span style="color: #000000; ">=</span><span style="color: #000000; ">INADDR_BROADCAST;<br /></span><span style="color: #008080; ">&nbsp;60</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;addrto.sin_port</span><span style="color: #000000; ">=</span><span style="color: #000000; ">htons(</span><span style="color: #000000; ">9290</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">&nbsp;61</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">bool</span><span style="color: #000000; ">&nbsp;opt</span><span style="color: #000000; ">=</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">&nbsp;62</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">设置该套接字为广播类型，</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;63</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;setsockopt(s,SOL_SOCKET,SO_BROADCAST,(</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;FAR&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">opt,</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(opt));<br /></span><span style="color: #008080; ">&nbsp;64</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;nlen</span><span style="color: #000000; ">=</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(addrto);<br /></span><span style="color: #008080; ">&nbsp;65</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;66</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;67</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sleep(</span><span style="color: #000000; ">10</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">&nbsp;68</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;num&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">&nbsp;69</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">从广播地址发送消息</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;70</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;ret</span><span style="color: #000000; ">=</span><span style="color: #000000; ">sendto(s,smsg,</span><span style="color: #000000; ">256</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,(sockaddr</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">addrto,nlen);<br /></span><span style="color: #008080; ">&nbsp;71</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(ret</span><span style="color: #000000; ">==</span><span style="color: #000000; ">SOCKET_ERROR)<br /></span><span style="color: #008080; ">&nbsp;72</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;73</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">GetLastError:&nbsp;%d&nbsp;\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,WSAGetLastError());<br /></span><span style="color: #008080; ">&nbsp;74</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;75</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;76</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;77</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">ok,&nbsp;num&nbsp;=&nbsp;%d&nbsp;\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;num);&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;78</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;79</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">&nbsp;80</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sleep(</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">&nbsp;81</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">&nbsp;82</span>&nbsp;<span style="color: #000000; ">}<br /></span><span style="color: #008080; ">&nbsp;83</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;84</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;sbTcp(</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;85</span>&nbsp;<span style="color: #000000; ">{<br /></span><span style="color: #008080; ">&nbsp;86</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;SOCKET&nbsp;listener;<br /></span><span style="color: #008080; ">&nbsp;87</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;sockaddr_in&nbsp;listen_adress;<br /></span><span style="color: #008080; ">&nbsp;88</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;WSADATA&nbsp;wsdata;<br /></span><span style="color: #008080; ">&nbsp;89</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">启动SOCKET库，版本为2.0</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;90</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;WSAStartup(</span><span style="color: #000000; ">0x0202</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">wsdata);<br /></span><span style="color: #008080; ">&nbsp;91</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;92</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">然后赋值给两个地址，一个用来绑定套接字，一个用来从网络上的广播地址接收消息；</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;93</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;listen_adress.sin_family</span><span style="color: #000000; ">=</span><span style="color: #000000; ">AF_INET;<br /></span><span style="color: #008080; ">&nbsp;94</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;listen_adress.sin_addr.s_addr</span><span style="color: #000000; ">=</span><span style="color: #000000; ">INADDR_ANY;<br /></span><span style="color: #008080; ">&nbsp;95</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;listen_adress.sin_port</span><span style="color: #000000; ">=</span><span style="color: #000000; ">htons(</span><span style="color: #000000; ">9290</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">&nbsp;96</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;listener</span><span style="color: #000000; ">=</span><span style="color: #000000; ">socket(AF_INET,SOCK_STREAM,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">&nbsp;97</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;98</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;bind(listener,(sockaddr&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">listen_adress,</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(sockaddr_in));<br /></span><span style="color: #008080; ">&nbsp;99</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;listen(listener,&nbsp;</span><span style="color: #000000; ">5</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">100</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">101</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;buf[</span><span style="color: #000000; ">256</span><span style="color: #000000; ">];<br /></span><span style="color: #008080; ">102</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">103</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{</span><span style="color: #008000; ">//</span><span style="color: #008000; ">从广播地址接收消息，注意用来绑定的地址和接收消息的地址是不一样的</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">104</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sockaddr_in&nbsp;from;<br /></span><span style="color: #008080; ">105</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;fromlength&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(SOCKADDR);<br /></span><span style="color: #008080; ">106</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SOCKET&nbsp;temp&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;accept(listener,&nbsp;(sockaddr&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">from,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">fromlength);<br /></span><span style="color: #008080; ">107</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">108</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;recv(temp,&nbsp;buf,&nbsp;</span><span style="color: #000000; ">256</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">109</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%s&nbsp;:&nbsp;%s\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,inet_ntoa(from.sin_addr),&nbsp;buf);&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">在此处输出检查到的IP,对吗????</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">110</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; "><br /></span><span style="color: #008080; ">111</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">112</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">&nbsp;msg&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">ok~~~~~~~~~~</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">113</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">114</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">preper&nbsp;to&nbsp;send\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">115</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">116</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send(temp,&nbsp;msg.c_str(),&nbsp;msg.size()&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">117</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZeroMemory(buf,</span><span style="color: #000000; ">256</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">118</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closesocket(temp);<br /></span><span style="color: #008080; ">119</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">120</span>&nbsp;<span style="color: #000000; ">}<br /></span><span style="color: #008080; ">121</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">122</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">123</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;FbTcp(</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">124</span>&nbsp;<span style="color: #000000; ">{<br /></span><span style="color: #008080; ">125</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;sockaddr_in&nbsp;server_addres;<br /></span><span style="color: #008080; ">126</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;WSADATA&nbsp;wsdata;<br /></span><span style="color: #008080; ">127</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">smsg</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Hello&nbsp;Socket!</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">128</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;WSAStartup(</span><span style="color: #000000; ">0x0202</span><span style="color: #000000; ">,</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">wsdata);<br /></span><span style="color: #008080; ">129</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">130</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">然后赋值给地址，用来从网络上的广播地址接收消息；</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">131</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;server_addres.sin_family</span><span style="color: #000000; ">=</span><span style="color: #000000; ">AF_INET;<br /></span><span style="color: #008080; ">132</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;server_addres.sin_addr.s_addr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;inet_addr(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">127.0.0.1</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">133</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;server_addres.sin_port</span><span style="color: #000000; ">=</span><span style="color: #000000; ">htons(</span><span style="color: #000000; ">9290</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">134</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">135</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;nlen</span><span style="color: #000000; ">=</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(server_addres);<br /></span><span style="color: #008080; ">136</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">137</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">138</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SOCKET&nbsp;s&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;socket(AF_INET,SOCK_STREAM,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">139</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;ret&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;connect(s,&nbsp;(LPSOCKADDR)</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">server_addres,&nbsp;</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(server_addres));<br /></span><span style="color: #008080; ">140</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">141</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;num&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">142</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;buf[</span><span style="color: #000000; ">256</span><span style="color: #000000; ">];<br /></span><span style="color: #008080; ">143</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">从广播地址发送消息</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">144</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret</span><span style="color: #000000; ">=</span><span style="color: #000000; ">send(s,smsg,</span><span style="color: #000000; ">256</span><span style="color: #000000; ">,</span><span style="color: #000000; ">0</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">145</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;recv(s,&nbsp;buf,&nbsp;</span><span style="color: #000000; ">256</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">146</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%s&nbsp;&nbsp;@&nbsp;&nbsp;%l</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;buf,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">buf);<br /></span><span style="color: #008080; ">147</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(ret</span><span style="color: #000000; ">==</span><span style="color: #000000; ">SOCKET_ERROR)<br /></span><span style="color: #008080; ">148</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">149</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">GetLastError:&nbsp;%d&nbsp;\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,WSAGetLastError());<br /></span><span style="color: #008080; ">150</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">151</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">152</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br /></span><span style="color: #008080; ">153</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">ok,&nbsp;num&nbsp;=&nbsp;%d&nbsp;\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;num);&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">154</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">155</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">156</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closesocket(s);<br /></span><span style="color: #008080; ">157</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">158</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sleep(</span><span style="color: #000000; ">100</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">159</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">160</span>&nbsp;<span style="color: #000000; ">}<br /></span><span style="color: #008080; ">161</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">162</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">163</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">164</span>&nbsp;<span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">165</span>&nbsp;<span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">166</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">using</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; ">&nbsp;std;<br /></span><span style="color: #008080; ">167</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">168</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">169</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">170</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()<br /></span><span style="color: #008080; ">171</span>&nbsp;<span style="color: #000000; ">{<br /></span><span style="color: #008080; ">172</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;c&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;getchar();<br /></span><span style="color: #008080; ">173</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(c&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">s</span><span style="color: #000000; ">'</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">174</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">175</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sbBroadcast();<br /></span><span style="color: #008080; ">176</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">177</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(c&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">f</span><span style="color: #000000; ">'</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">178</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">179</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fbBroadcast();<br /></span><span style="color: #008080; ">180</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">181</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(c&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">'</span><span style="color: #000000; ">z</span><span style="color: #000000; ">'</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">182</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">183</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sbTcp();<br /></span><span style="color: #008080; ">184</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">185</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">186</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080; ">187</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FbTcp();<br /></span><span style="color: #008080; ">188</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080; ">189</span>&nbsp;<span style="color: #000000; ">}</span></div><img src ="http://www.cppblog.com/hannosogno/aggbug/152227.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/hannosogno/" target="_blank">NoNews</a> 2011-08-01 18:11 <a href="http://www.cppblog.com/hannosogno/archive/2011/08/01/152227.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>