锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲AV日韩AV天堂久久,精品国产99久久久久久麻豆,97久久国产露脸精品国产http://www.shnenglu.com/aaxron/category/16222.html璁板綍淇鐨勫嵃璁? zh-cnFri, 14 Jun 2013 13:20:45 GMTFri, 14 Jun 2013 13:20:45 GMT60udp鍙戦佸箍鎾?/title><link>http://www.shnenglu.com/aaxron/archive/2013/06/13/200986.html</link><dc:creator>澶╀笅</dc:creator><author>澶╀笅</author><pubDate>Thu, 13 Jun 2013 08:29:00 GMT</pubDate><guid>http://www.shnenglu.com/aaxron/archive/2013/06/13/200986.html</guid><wfw:comment>http://www.shnenglu.com/aaxron/comments/200986.html</wfw:comment><comments>http://www.shnenglu.com/aaxron/archive/2013/06/13/200986.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/aaxron/comments/commentRss/200986.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/aaxron/services/trackbacks/200986.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">stdafx.h</span><span style="color: #000000">"</span><span style="color: #000000"><br /><br /></span><span style="color: #0000ff">int</span><span style="color: #000000"> _tmain(</span><span style="color: #0000ff">int</span><span style="color: #000000"> argc, _TCHAR</span><span style="color: #000000">*</span><span style="color: #000000"> argv[])<br />{<br />    WORD wVersionRequested;<br />    WSADATA wsaData;<br />    </span><span style="color: #0000ff">int</span><span style="color: #000000"> err;<br />    </span><span style="color: #0000ff">int</span><span style="color: #000000"> so_broadcast</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000">;<br />    </span><span style="color: #0000ff">int</span><span style="color: #000000"> ret;<br /><br />    wVersionRequested </span><span style="color: #000000">=</span><span style="color: #000000"> MAKEWORD( </span><span style="color: #000000">2</span><span style="color: #000000">, </span><span style="color: #000000">2</span><span style="color: #000000"> );<br />    err </span><span style="color: #000000">=</span><span style="color: #000000"> WSAStartup( wVersionRequested, </span><span style="color: #000000">&</span><span style="color: #000000">wsaData );<br />    </span><span style="color: #0000ff">if</span><span style="color: #000000"> ( err </span><span style="color: #000000">!=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000"> ) {<br />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">;<br />    }<br />    SOCKET fd </span><span style="color: #000000">=</span><span style="color: #000000"> socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);<br />    </span><span style="color: #0000ff">if</span><span style="color: #000000"> (fd </span><span style="color: #000000">==</span><span style="color: #000000"> INVALID_SOCKET) {<br />        printf(</span><span style="color: #000000">"</span><span style="color: #000000">Error at socket(): %ld\n</span><span style="color: #000000">"</span><span style="color: #000000">, WSAGetLastError() );<br />        WSACleanup();<br />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">;<br />    }<br /><br />    err </span><span style="color: #000000">=</span><span style="color: #000000"> setsockopt(fd,SOL_SOCKET,SO_BROADCAST,(</span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000">)</span><span style="color: #000000">&</span><span style="color: #000000">so_broadcast,</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(so_broadcast));<br />    </span><span style="color: #0000ff">if</span><span style="color: #000000"> ( err </span><span style="color: #000000">!=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000"> ) {<br />        printf(</span><span style="color: #000000">"</span><span style="color: #000000">Error at setsockopt(): %ld\n</span><span style="color: #000000">"</span><span style="color: #000000">, WSAGetLastError() );<br />        WSACleanup();<br />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">;<br />    }<br />    <br /><br />    </span><span style="color: #0000ff">char</span><span style="color: #000000"> buf[</span><span style="color: #000000">256</span><span style="color: #000000">];<br />    sprintf(buf,</span><span style="color: #000000">"</span><span style="color: #000000">%d</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">12345678</span><span style="color: #000000">);<br />    sockaddr_in addr;<br />    addr.sin_family </span><span style="color: #000000">=</span><span style="color: #000000"> AF_INET;<br /><br />    </span><span style="color: #008000">//</span><span style="color: #008000">鍙楅檺騫挎挱鍦板潃,闇瑕佽緗皟鐢╯etsockopt(),鐢⊿O_BROADCAST閫夐」!<br />    </span><span style="color: #008000">//</span><span style="color: #008000">addr.sin_addr.s_addr = inet_addr( "255.255.255.255");<br />    <br />    </span><span style="color: #008000">//</span><span style="color: #008000">鐩存帴騫挎挱鍦板潃</span><span style="color: #008000"><br /></span><span style="color: #000000">    addr.sin_addr.s_addr </span><span style="color: #000000">=</span><span style="color: #000000"> inet_addr( </span><span style="color: #000000">"</span><span style="color: #000000">192.168.1.255</span><span style="color: #000000">"</span><span style="color: #000000">);<br />    addr.sin_port </span><span style="color: #000000">=</span><span style="color: #000000"> htons( </span><span style="color: #000000">5005</span><span style="color: #000000">);<br /><br />    ret </span><span style="color: #000000">=</span><span style="color: #000000"> sendto(fd,buf,strlen(buf)</span><span style="color: #000000">+</span><span style="color: #000000">1</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">&</span><span style="color: #000000">addr,</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(addr));<br />    printf(</span><span style="color: #000000">"</span><span style="color: #000000">sended len=%d \n</span><span style="color: #000000">"</span><span style="color: #000000">,ret);<br />    </span><span style="color: #0000ff">if</span><span style="color: #000000"> (ret</span><span style="color: #000000">==-</span><span style="color: #000000">1</span><span style="color: #000000">){<br />        err </span><span style="color: #000000">=</span><span style="color: #000000"> WSAGetLastError();<br />        printf(</span><span style="color: #000000">"</span><span style="color: #000000">err=%d \n</span><span style="color: #000000">"</span><span style="color: #000000">,err);<br />    }<br /><br />    WSACleanup();<br />    </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;<br />}<br /><br /></span></div><img src ="http://www.shnenglu.com/aaxron/aggbug/200986.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/aaxron/" target="_blank">澶╀笅</a> 2013-06-13 16:29 <a href="http://www.shnenglu.com/aaxron/archive/2013/06/13/200986.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鐚叓鎴掑鎴樺瓙緗?/title><link>http://www.shnenglu.com/aaxron/archive/2012/10/09/193070.html</link><dc:creator>澶╀笅</dc:creator><author>澶╀笅</author><pubDate>Tue, 09 Oct 2012 09:22:00 GMT</pubDate><guid>http://www.shnenglu.com/aaxron/archive/2012/10/09/193070.html</guid><wfw:comment>http://www.shnenglu.com/aaxron/comments/193070.html</wfw:comment><comments>http://www.shnenglu.com/aaxron/archive/2012/10/09/193070.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/aaxron/comments/commentRss/193070.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/aaxron/services/trackbacks/193070.html</trackback:ping><description><![CDATA[     鎽樿: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->//鑾峰彇騫挎挱鍦板潃//鍦╱dp鎺ユ敹騫挎挱鏃?濡傛灉鏈夊鍧楃綉鍗?浼氶噸澶嶆敹鍖?//鎵浠dp鍙戦佸箍鎾椂,鏈濂芥寚瀹氱洿鎺ョ殑騫挎挱鍦板潃,涓嶈鐢ㄥ彈闄愮殑騫挎挱鍦板潃255.255.255.255unsigned int&...  <a href='http://www.shnenglu.com/aaxron/archive/2012/10/09/193070.html'>闃呰鍏ㄦ枃</a><img src ="http://www.shnenglu.com/aaxron/aggbug/193070.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/aaxron/" target="_blank">澶╀笅</a> 2012-10-09 17:22 <a href="http://www.shnenglu.com/aaxron/archive/2012/10/09/193070.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>getaddrinfo鍑芥暟http://www.shnenglu.com/aaxron/archive/2012/05/15/174986.html澶╀笅澶╀笅Tue, 15 May 2012 08:57:00 GMThttp://www.shnenglu.com/aaxron/archive/2012/05/15/174986.htmlhttp://www.shnenglu.com/aaxron/comments/174986.htmlhttp://www.shnenglu.com/aaxron/archive/2012/05/15/174986.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/174986.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/174986.html#include <stdio.h>
#include 
<stdlib.h>
#include 
<string.h>
#include 
<vector>

#ifdef WIN32
    #include 
<WinSock2.h>
    #include 
<ws2tcpip.h>
    #pragma comment(lib,
"Ws2_32.lib")
    
//end WIN32
#else //Linux
    #include 
<unistd.h>
    #include 
<sys/socket.h>
    #include 
<netinet/in.h>
    #include 
<arpa/inet.h>
    #include 
<netdb.h>
#endif //end Linux

typedef std::vector
<struct in_addr> array_in_addr;
int GetHostsByName( const char *host_name,array_in_addr* pArrayaddr)
{
    
int n=0;
    
struct addrinfo hints,*res;
    
struct addrinfo* p_addrinfo = NULL;

    memset( 
&hints,0,sizeof(struct addrinfo) );
    hints.ai_flags 
= AI_CANONNAME;   //瀹㈡埛绔竴鑸氨鐢ㄨ繖涓?nbsp;AI_CANONNAME,鏈嶅姟绔緩璁敤:AI_PASSIVE 
    hints.ai_family = AF_INET;        //AF_INET:IPv4 ,AF_INET6:IPv6

    hints.ai_socktype 
= SOCK_STREAM; //IPPROTO_IP 鍙兘浼氫駭鐢熷涓噸澶岻P
    sockaddr_in* p_sockaddr_in;
    
if( (n = getaddrinfo( host_name,NULL, &hints, &res) ) != 0)
       
return 0;
    
    printf(
"domain:%s \r\n",host_name);
    p_addrinfo 
= res;
    
while(p_addrinfo!=NULL)
    {
        pArrayaddr
->push_back( ((sockaddr_in*)p_addrinfo->ai_addr)->sin_addr);
        printf(
"ip%d: %s \r\n",pArrayaddr->size(),inet_ntoa(((sockaddr_in*)p_addrinfo->ai_addr)->sin_addr));
        p_addrinfo 
= p_addrinfo->ai_next;
    }
    freeaddrinfo(res);
    
return pArrayaddr->size();    
}



int main(int argc, char *argv[])
{
    
int nRet;
    
const char* pszHost = NULL;
    array_in_addr inaddrs;
    
if (argc != 2) {
        printf(
"Usage:%s <hostname> \r\n",argv[0]);
        
return -1;
    }
    pszHost 
= argv[1];

#ifdef WIN32
    WSADATA wsaData;
    
int err = WSAStartup( 0x0202&wsaData );
    
if ( err != 0 )  {
        printf(
"socket init(WSAStartup) failure \r\n");
        
return 1;
    }
#endif
    GetHostsByName(pszHost,
&inaddrs);

#ifdef WIN32
    WSACleanup();
#endif
    
return 0;
}

鍙傝緗戝潃:

http://baike.baidu.com/view/6757218.htm



澶╀笅 2012-05-15 16:57 鍙戣〃璇勮
]]>
socket鍑芥暟send鍜宺ecv鍑芥暟http://www.shnenglu.com/aaxron/archive/2012/04/27/172891.html澶╀笅澶╀笅Fri, 27 Apr 2012 01:14:00 GMThttp://www.shnenglu.com/aaxron/archive/2012/04/27/172891.htmlhttp://www.shnenglu.com/aaxron/comments/172891.htmlhttp://www.shnenglu.com/aaxron/archive/2012/04/27/172891.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/172891.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/172891.html鍦ㄥ彂閫佺錛屼竴嬈″彂閫?092涓瓧鑺傦紝鍦ㄦ帴鏀剁錛屼竴嬈℃帴鏀?092涓瓧鑺傦紝浣嗘槸鍦ㄦ帴鏀剁錛屽伓灝斾細鍑虹幇 socket.receive 鎺ユ敹涓嶅叏鐨勬儏鍐?nbsp;錛宺et = ...  闃呰鍏ㄦ枃

澶╀笅 2012-04-27 09:14 鍙戣〃璇勮
]]>
TCP涓嶶DP鐨勪笉鍚屾帴鍖呭鐞嗘柟寮?/title><link>http://www.shnenglu.com/aaxron/archive/2012/01/06/163734.html</link><dc:creator>澶╀笅</dc:creator><author>澶╀笅</author><pubDate>Fri, 06 Jan 2012 09:03:00 GMT</pubDate><guid>http://www.shnenglu.com/aaxron/archive/2012/01/06/163734.html</guid><wfw:comment>http://www.shnenglu.com/aaxron/comments/163734.html</wfw:comment><comments>http://www.shnenglu.com/aaxron/archive/2012/01/06/163734.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/aaxron/comments/commentRss/163734.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/aaxron/services/trackbacks/163734.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #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: #000000; ">TCP涓嶶DP鐨勪笉鍚屾帴鍖呭鐞嗘柟寮?br /><br /><br /></span><span style="color: #000000; ">1</span><span style="color: #000000; ">.UDP鍙戝寘鐨勯棶棰?br />闂細udp 鍙戦佷袱嬈℃暟鎹紝絎竴嬈?nbsp;100瀛楄妭 錛岀浜屾200瀛楄妭錛?nbsp;鎺ュ寘鏂逛竴嬈ecvfrom( </span><span style="color: #000000; ">1000</span><span style="color: #000000; "> ), 鏀跺埌鏄?nbsp;</span><span style="color: #000000; ">100</span><span style="color: #000000; ">錛岃繕鏄?00錛岃繕鏄?00錛?br />絳旓細UDP鏄暟鎹姤鏂囧崗璁紝鏄互鏁版嵁鍖呮柟寮忥紝鎵浠ユ瘡嬈″彲浠ユ帴鏀?00錛?/span><span style="color: #000000; ">200</span><span style="color: #000000; ">錛屽湪鐞嗘兂鎯呭喌涓嬶紝絎竴嬈℃槸鏃犺recvfrom澶氬皯閮芥槸鎺ユ敹鍒?00銆傚綋鐒訛紝鍙兘鐢變簬緗戠粶鍘熷洜錛岀浜屼釜鍖呭厛鍒扮殑璇濓紝鏈夊彲鑳芥槸200浜嗐傚鍙兘浼氱敱浜庣綉緇滃師鍥犱貢搴忥紝鎵浠ュ彲鑳藉厛鏀跺埌200錛屾墍浠ヨ嚜瀹氫箟鐨剈dp鍗忚鍖呭ご閲岄兘瑕佸姞涓婁竴涓簭鍒楀彿錛屾爣璇嗗彂閫佷笌鏀跺寘瀵瑰簲<br /><br /></span><span style="color: #000000; ">2</span><span style="color: #000000; ">.TCP鐨勫彂鍖呴棶棰?br />闂細鍚屾牱濡傛灉鎹㈡垚tcp, 絎竴嬈″彂閫?nbsp;100瀛楄妭 錛岀浜屾鍙戦?00瀛楄妭錛宺ecv( </span><span style="color: #000000; ">1000</span><span style="color: #000000; "> )浼氭帴鏀跺埌澶氬皯錛?br />絳旓細tcp鏄祦鍗忚錛屾墍浠ecv( </span><span style="color: #000000; ">1000</span><span style="color: #000000; "> )錛屼細鏀跺埌300 tcp鑷繁澶勭悊濂戒簡閲嶄紶錛屼繚璇佹暟鎹寘鐨勫畬鏁存?br /><br /></span><span style="color: #000000; ">3</span><span style="color: #000000; ">.鏈夊垎鐗囩殑鎯呭喌涓嬪涓嬪鐞?br />闂細濡傛灉MTU鏄?500錛屼嬌鐢║DP鍙戦?nbsp;</span><span style="color: #000000; ">2000</span><span style="color: #000000; ">錛岄偅涔坮ecvfrom(</span><span style="color: #000000; ">2000</span><span style="color: #000000; ">)鏄敹鍒?500錛岃繕鏄?000</span><span style="color: #000000; ">?</span><span style="color: #000000; "><br />絳旓細 榪樻槸鎺ユ敹2000錛屾暟鎹垎鐗囩敱ip灞傚鐞嗕簡錛屾斁鍒皍dp榪樻槸涓涓畬鏁寸殑鍖呫傛帴鏀跺埌鐨勫寘鏄敱璺敱璺緞涓婃渶灝戠殑MTU鏉ュ垎鐗囷紝娉ㄦ剰杞埌UDP宸茬粡鍦ㄦ槸緇勮濂界殑(緇勮鍑洪敊鐨勫寘浼氱粡crc鏍¢獙鍑洪敊鑰屼涪寮?錛屾槸涓涓畬鏁寸殑鏁版嵁鍖?br /><br /></span><span style="color: #000000; ">4</span><span style="color: #000000; ">.鍒嗙墖鍚庣殑澶勭悊<br />闂細濡傛灉500閭d釜鐗囦涪浜嗘庝箞鍔烇紵udp鍙堟病鏈夐噸浼?br />絳旓細udp閲屾湁涓猚rc媯楠岋紝濡傛灉鍖呬笉瀹屾暣灝變細涓㈠純錛屼篃涓嶄細閫氱煡鏄惁鎺ユ敹鎴愬姛錛屾墍浠DP鏄笉鍙潬鐨勪紶杈撳崗璁紝鑰屼笖TCP涓嶅瓨鍦ㄨ繖涓棶棰橈紝鏈夎嚜宸辯殑閲嶄紶鏈哄埗銆傚湪鍐呯綉鏉ヨ錛孶DP鍩烘湰涓嶄細鏈変涪鍖咃紝鍙潬鎬ц繕鏄湁淇濋殰銆傚綋鐒跺鏋滄槸瑕佹眰鏈夋椂搴忔у拰楂樺彲闈犳э紝榪樻槸璧癟CP錛屼笉鐒跺氨瑕佽嚜宸辨彁渚涢噸浼犲拰涔卞簭澶勭悊( UDP鍐呯綉鍙戝寘澶勭悊閲忓彲浠ヨ揪 7w</span><span style="color: #000000; ">~</span><span style="color: #000000; ">10w</span><span style="color: #000000; ">/</span><span style="color: #000000; ">s )<br /><br /></span><span style="color: #000000; ">5</span><span style="color: #000000; ">.涓嶅悓榪炴帴鍒板悓涓涓鍙g殑鍖呭鐞?br />闂細TCP<br />A </span><span style="color: #000000; ">-></span><span style="color: #000000; "> C 鍙?00<br />B </span><span style="color: #000000; ">-></span><span style="color: #000000; "> C 鍙?00<br />AB鍚屾椂鍚屼竴绔彛<br />C recv(</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">) ,浼氭敹鍒板灝戯紵<br />絳旓細A涓嶤鏄竴涓猼cp榪炴帴錛孊涓嶤鍙堟槸鍙︿竴涓猼cp榪炴帴錛?nbsp;鎵浠ヤ笉鍚宻ocket錛屾墍浠ュ垎寮澶勭悊銆傛瘡涓猻ocket鏈夎嚜宸辯殑鎺ユ敹緙撳啿鍜屽彂閫佺紦鍐?br /><br /></span><span style="color: #000000; ">6</span><span style="color: #000000; ">.浠涔堟槸TCP綺樺寘<br /><br />鐢變簬TCP鏄祦鍗忚錛屽浜庝竴涓猻ocket鐨勫寘錛屽鍙戦?nbsp;10AAAAABBBBB涓ゆ錛岀敱浜庣綉緇滃師鍥犵涓嬈″張鍒嗘垚涓ゆ鍙戦侊紝 10AAAAAB鍜孊BBB錛屽鏋滄帴鍖呯殑鏃跺欏厛璇誨彇10(鍖呴暱搴?鍐嶈鍏ュ悗緇暟鎹紝褰撴帴鏀跺緱蹇紝鍙戦佺殑鎱㈡椂錛屽氨浼氬嚭鐜板厛鎺ユ敹浜?nbsp;10AAAAAB,浼氳В閲婇敊璇?nbsp;,鍐嶆帴鍒板埌BBBB10AAAAABBBBB錛屼篃瑙i噴閿欒鐨勬儏鍐點傝繖灝辨槸TCP鐨勭矘鍖呫?br />   瑙e喅鐨勫姙娉昑LV鏂瑰紡錛屽厛鎺ユ敹鍖呭ご錛屽湪鍖呭ご閲屾寚瀹氬寘浣撻暱搴︽潵鎺ユ敹銆傝緗寘澶村寘灝劇殑媯鏌ヤ綅錛堝緹ょ┖闂?x2寮澶達紝0x3緇撴潫鏉ユ鏌ヤ竴涓寘鏄惁瀹屾暣錛夈傚浜嶵CP鏉ヨ錛?/span><span style="color: #000000; ">1</span><span style="color: #000000; ">錛変笉瀛樺湪涓㈠寘錛岄敊鍖咃紝鎵浠ヤ笉浼氬嚭鐜版暟鎹嚭閿?nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">錛夊鏋滃寘澶存嫻嬮敊璇紝鍗充負闈炴硶鎴栬呰姹傦紝鐩存帴閲嶇疆鍗沖彲<br />7.<br /><div><p>For message-oriented sockets, data is extracted from the first enqueued message, up to the size of the buffer specified. If the datagram or message is larger than the buffer specified, the buffer is filled with the first part of the datagram, and <strong>recvfrom</strong> generates the error <a href="">WSAEMSGSIZE</a>. For unreliable protocols (for example, UDP) the excess data is lost.<br /><br /></p></div></span></div><img src ="http://www.shnenglu.com/aaxron/aggbug/163734.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/aaxron/" target="_blank">澶╀笅</a> 2012-01-06 17:03 <a href="http://www.shnenglu.com/aaxron/archive/2012/01/06/163734.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>綆鍗曞崗璁璁?/title><link>http://www.shnenglu.com/aaxron/archive/2011/10/12/158137.html</link><dc:creator>澶╀笅</dc:creator><author>澶╀笅</author><pubDate>Wed, 12 Oct 2011 08:01:00 GMT</pubDate><guid>http://www.shnenglu.com/aaxron/archive/2011/10/12/158137.html</guid><wfw:comment>http://www.shnenglu.com/aaxron/comments/158137.html</wfw:comment><comments>http://www.shnenglu.com/aaxron/archive/2011/10/12/158137.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/aaxron/comments/commentRss/158137.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/aaxron/services/trackbacks/158137.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #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: #000000; ">#pragma pack(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br />typedef </span><span style="color: #0000FF; ">struct</span><span style="color: #000000; "> _tag_COMM_PACK_REQUEST<br />{<br />    BYTE    header[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">];    </span><span style="color: #008000; ">//</span><span style="color: #008000; ">2瀛楄妭,鍗忚澶?/span><span style="color: #008000; "><br /></span><span style="color: #000000; ">    UINT64    requestID;        </span><span style="color: #008000; ">//</span><span style="color: #008000; ">8瀛楄妭,嫻佹按鍙?/span><span style="color: #008000; "><br /></span><span style="color: #000000; ">    BYTE    entryType;    </span><span style="color: #008000; ">//</span><span style="color: #008000; ">1瀛楄妭,鍔犲瘑綾誨瀷</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">    DWORD    cmd;        </span><span style="color: #008000; ">//</span><span style="color: #008000; ">4瀛楄妭,鍛戒護</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">    DWORD    dataLen;    </span><span style="color: #008000; ">//</span><span style="color: #008000; ">4瀛楄妭,鏁版嵁闀垮害</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">    BYTE    checksum;    </span><span style="color: #008000; ">//</span><span style="color: #008000; ">1瀛楄妭,鏍¢獙鍜?/span><span style="color: #008000; "><br /></span><span style="color: #000000; ">    </span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">    data[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">];    </span><span style="color: #008000; ">//</span><span style="color: #008000; ">0瀛楄妭,</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">}COMM_PACK_REQUEST;        </span><span style="color: #008000; ">//</span><span style="color: #008000; ">鍏?20瀛楄妭</span><span style="color: #008000; "><br /></span><span style="color: #000000; "><br />typedef </span><span style="color: #0000FF; ">struct</span><span style="color: #000000; "> _tag_COMM_PACK_RESPONSE<br />{<br />    BYTE    header[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">];    </span><span style="color: #008000; ">//</span><span style="color: #008000; ">2瀛楄妭,鍗忚澶?/span><span style="color: #008000; "><br /></span><span style="color: #000000; ">    UINT64    responseID;        </span><span style="color: #008000; ">//</span><span style="color: #008000; ">8瀛楄妭,嫻佹按鍙?/span><span style="color: #008000; "><br /></span><span style="color: #000000; ">    BYTE    entryType;    </span><span style="color: #008000; ">//</span><span style="color: #008000; ">1瀛楄妭,鍔犲瘑綾誨瀷</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">    DWORD    err;        </span><span style="color: #008000; ">//</span><span style="color: #008000; ">4瀛楄妭,鍛戒護</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">    DWORD    dataLen;    </span><span style="color: #008000; ">//</span><span style="color: #008000; ">4瀛楄妭,鏁版嵁闀垮害</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">    BYTE    checksum;    </span><span style="color: #008000; ">//</span><span style="color: #008000; ">1瀛楄妭,鏍¢獙鍜?/span><span style="color: #008000; "><br /></span><span style="color: #000000; ">    </span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">    data[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">];    </span><span style="color: #008000; ">//</span><span style="color: #008000; ">0瀛楄妭,</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">}COMM_PACK_RESPONSE;    </span><span style="color: #008000; ">//</span><span style="color: #008000; ">鍏?20瀛楄妭</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">#pragma pack()<br /><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; "> COMM_PACK_REQUEST_SIZE    sizeof(COMM_PACK_REQUEST)</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; "> COMM_PACK_RESPONSE_SIZE    sizeof(COMM_PACK_RESPONSE)</span></div><img src ="http://www.shnenglu.com/aaxron/aggbug/158137.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/aaxron/" target="_blank">澶╀笅</a> 2011-10-12 16:01 <a href="http://www.shnenglu.com/aaxron/archive/2011/10/12/158137.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Linux Socket闃誨妯″紡鏈嶅姟绔疍emo 61.cpphttp://www.shnenglu.com/aaxron/archive/2011/09/08/155363.html澶╀笅澶╀笅Thu, 08 Sep 2011 08:06:00 GMThttp://www.shnenglu.com/aaxron/archive/2011/09/08/155363.htmlhttp://www.shnenglu.com/aaxron/comments/155363.htmlhttp://www.shnenglu.com/aaxron/archive/2011/09/08/155363.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/155363.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/155363.html// File: 61.cpp
//瀹㈡埛绔唬鐮?nbsp;62.cpp
#include <stdio.h>
#include 
<unistd.h>
#include 
<stdlib.h>
#include 
<string.h> 
#include 
<strings.h>
#include 
<sys/types.h> 
#include 
<sys/socket.h> 
#include 
<netinet/in.h> 
#include 
<arpa/inet.h>


#define PORT 1234   /* Port that will be opened */ 
#define BACKLOG 5   /* Number of allowed connections */ 
#define MAXDATASIZE 4096  

void process_cli(int connectfd,struct sockaddr_in client);

int main()  {
 
int listenfd, connectfd; /* socket descriptors */ 
 
struct sockaddr_in server; /* server's address information */ 
 
struct sockaddr_in client; /* client's address information */ 
 socklen_t sin_size; 

 
/* Create TCP socket  */
 
if ((listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)  {
  
/* handle exception */
  perror(
"Creating socket failed.\n");
  exit(
1);
 }

 
int opt = SO_REUSEADDR;
 setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, 
&opt, sizeof(opt));

 bzero(
&server,sizeof(server));
 server.sin_family
=AF_INET; 
 server.sin_port
=htons(PORT); 
 server.sin_addr.s_addr 
= htonl (INADDR_ANY); 
 
if (bind(listenfd, (struct sockaddr *)&server, sizeof(struct sockaddr)) == -1) { 
  
/* handle exception */
  perror(
"Bind error.\n");
  exit(
1); 
 }    

 
if(listen(listenfd,BACKLOG) == -1){  /* calls listen() */ 
  perror(
"listen() error\n"); 
  exit(
1); 
 } 

 sin_size
=sizeof(struct sockaddr_in); 
 
while (1) {
  
if ((connectfd = accept(listenfd,(struct sockaddr *)&client,&sin_size))==-1) {
   perror(
"accept() error\n"); 
   exit(
1); 
  }   
  process_cli(connectfd, client);
 }

 close(listenfd);      


void process_cli(int connectfd, struct sockaddr_in client)
{
 
int num;
 
char recvbuf[MAXDATASIZE], sendbuf[MAXDATASIZE];

 
/* prints client's IP */ 
 printf(
"%s:%d Client was connected\n",inet_ntoa(client.sin_addr), ntohs( client.sin_port) );

 
while (1) {
  num 
= recv(connectfd, recvbuf, MAXDATASIZE,0);
  
if (num == 0) {
   close(connectfd);
   printf(
"%s:%d Client was disconnected \n",inet_ntoa(client.sin_addr), ntohs( client.sin_port) );
   
break;
  }
  
if (num == -1) {
   perror(
"recv() error\n"); 
   
break;
  }
  printf(
"recvbuf[0]:%d,recvbuf[num-1]:%d,num:%d\n",recvbuf[0],recvbuf[num-1],num);
  recvbuf[num] 
= '\0';
  printf(
"Received message From Client : %s\n",recvbuf);
  
for (int i = 0; i < num; i++) {
   sendbuf[i] 
= recvbuf[num-i-1];
   
//printf("sendbuf[%d]:%d\n",i,sendbuf[i]);
  }
  
//printf("sendbuf[0]:%d,sendbuf[num-1]:%d,num:%d\n",sendbuf[0],sendbuf[num-1],num);
  send(connectfd,sendbuf,num,0); /* send to the client welcome message */ 
 }
 close(connectfd); 
/*  close connectfd */ 
}


 


澶╀笅 2011-09-08 16:06 鍙戣〃璇勮
]]>
Linux Socket瀛愯繘紼嬫ā寮忔湇鍔$Demo 63.cpphttp://www.shnenglu.com/aaxron/archive/2011/09/08/155362.html澶╀笅澶╀笅Thu, 08 Sep 2011 08:06:00 GMThttp://www.shnenglu.com/aaxron/archive/2011/09/08/155362.htmlhttp://www.shnenglu.com/aaxron/comments/155362.htmlhttp://www.shnenglu.com/aaxron/archive/2011/09/08/155362.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/155362.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/155362.html// File: 63.cpp
//瀹㈡埛绔唬鐮?nbsp;62.cpp
#include <stdio.h>
#include 
<unistd.h>
#include 
<stdlib.h>
#include 
<string.h> 
#include 
<strings.h>
#include 
<sys/types.h> 
#include 
<sys/socket.h> 
#include 
<netinet/in.h> 
#include 
<arpa/inet.h>


#define PORT 1234   /* Port that will be opened */ 
#define BACKLOG 5   /* Number of allowed connections */ 
#define MAXDATASIZE 4096  

void process_cli(int connectfd,struct sockaddr_in client);

int main() 

 
int listenfd, connectfd; /* socket descriptors */ 
 pid_t pid;
 
struct sockaddr_in server; /* server's address information */ 
 
struct sockaddr_in client; /* client's address information */ 
 socklen_t sin_size; 

 
/* Create TCP socket  */
 
if ((listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
  
/* handle exception */
  perror(
"Creating socket failed.\n");
  exit(
1);
 }

 
int opt = SO_REUSEADDR;
 setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, 
&opt, sizeof(opt));

 bzero(
&server,sizeof(server));
 server.sin_family
=AF_INET; 
 server.sin_port
=htons(PORT); 
 server.sin_addr.s_addr 
= htonl(INADDR_ANY); 
 
if (bind(listenfd, (struct sockaddr *)&server, sizeof(struct sockaddr)) == -1) { 
  
/* handle exception */
  perror(
"Bind error.\n");
  exit(
1); 
 }    

 
if(listen(listenfd,BACKLOG) == -1){  /* calls listen() */ 
  perror(
"listen() error\n"); 
  exit(
1); 
 } 

 sin_size
=sizeof(struct sockaddr_in); 

 
while(1)
 {
  
/*accept connection */
  
if ((connectfd = accept(listenfd,(struct sockaddr *)&client,&sin_size))==-1) {
   perror(
"accept() error\n"); 
   exit(
1); 
  } 
  
/*  Create child process to service client */
  
if ((pid=fork())>0) {
   
/* parent process */
   close(connectfd);
   
continue;
  }
  
else if (pid==0) {
   
/*child process*/
   close(listenfd);
   process_cli(connectfd, client);
   exit(
0);     
  }
  
else {
   perror(
"fork() error\n");
   exit(
0);
  }
 }
 close(listenfd);   
/* close listenfd */         


void process_cli(int connectfd, struct sockaddr_in client)
{
 
int num;
 
char recvbuf[MAXDATASIZE], sendbuf[MAXDATASIZE];

 
/* prints client's IP */ 
 printf(
"%s:%d Client was connected\n",inet_ntoa(client.sin_addr), ntohs( client.sin_port) );

 
while (1) {
  num 
= recv(connectfd, recvbuf, MAXDATASIZE,0);
  
if (num == 0) {
   close(connectfd);
   printf(
"%s:%d Client was disconnected \n",inet_ntoa(client.sin_addr), ntohs( client.sin_port) );
   
break;
  }
  
if (num == -1) {
   perror(
"recv() error\n"); 
   
break;
  }
  printf(
"recvbuf[0]:%d,recvbuf[num-1]:%d,num:%d\n",recvbuf[0],recvbuf[num-1],num);
  recvbuf[num] 
= '\0';
  printf(
"Received message From Client : %s\n",recvbuf);
  
for (int i = 0; i < num; i++) {
   sendbuf[i] 
= recvbuf[num-i-1];
   
//printf("sendbuf[%d]:%d\n",i,sendbuf[i]);
  }
  
//printf("sendbuf[0]:%d,sendbuf[num-1]:%d,num:%d\n",sendbuf[0],sendbuf[num-1],num);
  send(connectfd,sendbuf,num,0); /* send to the client welcome message */ 
 }
 close(connectfd); 
/*  close connectfd */ 
}


 


澶╀笅 2011-09-08 16:06 鍙戣〃璇勮
]]>
Linux Socket澶氱嚎紼嬫ā寮忔湇鍔$Demo 64.cpphttp://www.shnenglu.com/aaxron/archive/2011/09/08/155361.html澶╀笅澶╀笅Thu, 08 Sep 2011 08:04:00 GMThttp://www.shnenglu.com/aaxron/archive/2011/09/08/155361.htmlhttp://www.shnenglu.com/aaxron/comments/155361.htmlhttp://www.shnenglu.com/aaxron/archive/2011/09/08/155361.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/155361.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/155361.html// File: 64.cpp
//g++ -o 64 64.cpp -lpthread
//瀹㈡埛绔唬鐮?nbsp;62.cpp
#include <stdio.h>
#include 
<unistd.h>
#include 
<stdlib.h>
#include 
<string.h> 
#include 
<strings.h>
#include 
<sys/types.h> 
#include 
<sys/socket.h> 
#include 
<netinet/in.h> 
#include 
<arpa/inet.h>
#include 
<pthread.h>


#define PORT 1234   /* Port that will be opened */ 
#define BACKLOG 5   /* Number of allowed connections */ 
#define MAXDATASIZE 4096  

void process_cli(int connectfd,struct sockaddr_in client);

/* function to be executed by the new thread */
void* start_routine(void* arg);
struct  ARG  {
 
int connfd;
 sockaddr_in client;  
};

int main() 

 
int listenfd, connectfd; /* socket descriptors */ 
 pthread_t  thread;
 ARG 
*arg;
 
struct sockaddr_in server; /* server's address information */ 
 
struct sockaddr_in client; /* client's address information */ 
 socklen_t sin_size; 

 
/* Create TCP socket */
 
if ((listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
  
/* handle exception */
  perror(
"Creating socket failed.\n");
  exit(
1);
 }

 
int opt = SO_REUSEADDR;
 setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, 
&opt, sizeof(opt));

 bzero(
&server,sizeof(server));
 server.sin_family
=AF_INET; 
 server.sin_port
=htons(PORT); 
 server.sin_addr.s_addr 
= htonl(INADDR_ANY); 
 
if (bind(listenfd, (struct sockaddr *)&server, sizeof(struct sockaddr)) == -1) { 
  
/* handle exception */
  perror(
"Bind error.");
  exit(
1); 
 }    

 
if(listen(listenfd,BACKLOG) == -1){  /* calls listen() */ 
  perror(
"listen() error\n"); 
  exit(
1); 
 } 

 sin_size
=sizeof(struct sockaddr_in); 
 
while(1)
 {
  
/* Accept connection */
  
if ((connectfd = accept(listenfd,(struct sockaddr *)&client,&sin_size))==-1) {
   perror(
"accept() error\n"); 
   exit(
1); 
  } 
  
/*  Create thread*/

  arg 
= new ARG;
  arg
->connfd = connectfd;
  memcpy((
void *)&arg->client, &client, sizeof(client));

  
if (pthread_create(&thread, NULL, start_routine, (void*)arg)) {
   
/* handle exception */
   perror(
"Pthread_create() error");
   exit(
1);
  }
 }
 close(listenfd);   
/* close listenfd */         


void process_cli(int connectfd, struct sockaddr_in client)
{
 
int num;
 
char recvbuf[MAXDATASIZE], sendbuf[MAXDATASIZE];

 
/* prints client's IP */ 
 printf(
"%s:%d Client was connected\n",inet_ntoa(client.sin_addr), ntohs( client.sin_port) );

 
while (1) {
  num 
= recv(connectfd, recvbuf, MAXDATASIZE,0);
  
if (num == 0) {
   close(connectfd);
   printf(
"%s:%d Client was disconnected \n",inet_ntoa(client.sin_addr), ntohs( client.sin_port) );
   
break;
  }
  
if (num == -1) {
   perror(
"recv() error\n"); 
   
break;
  }
  printf(
"recvbuf[0]:%d,recvbuf[num-1]:%d,num:%d\n",recvbuf[0],recvbuf[num-1],num);
  recvbuf[num] 
= '\0';
  printf(
"Received message From Client : %s\n",recvbuf);
  
for (int i = 0; i < num; i++) {
   sendbuf[i] 
= recvbuf[num-i-1];
   
//printf("sendbuf[%d]:%d\n",i,sendbuf[i]);
  }
  
//printf("sendbuf[0]:%d,sendbuf[num-1]:%d,num:%d\n",sendbuf[0],sendbuf[num-1],num);
  send(connectfd,sendbuf,num,0); /* send to the client welcome message */ 
 }
 close(connectfd); 
/*  close connectfd */ 
}

void* start_routine(void* arg)
{
 ARG 
*info;
 info 
= (ARG *)arg;

 
/* handle client’s requirement */
 process_cli(info
->connfd, info->client);

 delete (ARG
*)arg;
 pthread_exit(NULL);
}

 


澶╀笅 2011-09-08 16:04 鍙戣〃璇勮
]]>
linux Socket澶氳礬澶嶇敤妯″紡鏈嶅姟绔?69.cpphttp://www.shnenglu.com/aaxron/archive/2011/09/08/155360.html澶╀笅澶╀笅Thu, 08 Sep 2011 08:03:00 GMThttp://www.shnenglu.com/aaxron/archive/2011/09/08/155360.htmlhttp://www.shnenglu.com/aaxron/comments/155360.htmlhttp://www.shnenglu.com/aaxron/archive/2011/09/08/155360.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/155360.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/155360.html// File: 69.cpp
#include <iostream>
#include 
<map>
#include 
<stdio.h>
#include 
<unistd.h>
#include 
<stdlib.h>
#include 
<math.h>
#include 
<string.h> 
#include 
<strings.h>
#include 
<sys/types.h> 
#include 
<sys/socket.h> 
#include 
<netinet/in.h> 
#include 
<arpa/inet.h>
#include 
<bitset>
using namespace std;
#define PORT 1234   /* Port that will be opened */ 
#define BACKLOG 5   /* Number of allowed connections */ 
#define MAXDATASIZE 4096  

typedef map
<unsigned int,sockaddr_in> connects;
void process_cli(int sockfd,sockaddr_in addr,char* recvbuf, int len);


void reverser(char* szIn,char* szOut,unsigned int nLen) 
{
 
for (int i=0;i<nLen;i++) {
  szOut[i] 
= szIn[nLen-i-1];
 }
}

int main() 

 connects connect_fds;
 
int sock_fd;
 ssize_t recv_size;
 fd_set read_set;
 fd_set all_set;
 
int listen_fd;
 
int connect_fd;
 
int ready_size;
 socklen_t addr_size; 
 sockaddr_in srv_addr;
 sockaddr_in addr;
 unsigned 
int max_fd = 0;
 
char recv_buf[MAXDATASIZE];

 
if ((listen_fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
  perror(
"Creating socket failed.");
  exit(
1);
 }

 
int opt = SO_REUSEADDR;
 setsockopt(listen_fd, SOL_SOCKET, SO_REUSEADDR, 
&opt, sizeof(opt));

 bzero(
&srv_addr,sizeof(srv_addr));
 srv_addr.sin_family
=AF_INET; 
 srv_addr.sin_port
=htons(PORT); 
 srv_addr.sin_addr.s_addr 
= htonl (INADDR_ANY); 
 
if (bind(listen_fd, (struct sockaddr *)&srv_addr, sizeof(struct sockaddr)) == -1) { 
  perror(
"Bind error.");
  exit(
1); 
 }    

 
if(listen(listen_fd,BACKLOG) == -1) {  
  perror(
"listen() error\n"); 
  exit(
1); 
 } 
 max_fd 
= listen_fd;
 addr_size
=sizeof(sockaddr_in); 
 
 FD_ZERO(
&all_set);
 FD_SET(listen_fd, 
&all_set);

 connects::iterator iter;

 printf(
"clients:(%u) ,current listen socket:%u\n",connect_fds.size(),listen_fd);
 
while(1)
 {
  read_set 
= all_set;
  ready_size 
= select(max_fd+1&read_set, NULL, NULL, NULL);
  
if ( FD_ISSET(listen_fd,&read_set) ) {
   connect_fd 
= accept(listen_fd,(struct sockaddr *)&addr,&addr_size);
   
if (connect_fd ==-1 ) {
    perror(
"accept() error\n"); 
    
continue
   }
   connect_fds[connect_fd]  
= addr;
   max_fd 
= connect_fd;
   FD_SET(connect_fd, 
&all_set);
   printf(
"clients:(%u) ,%s:%d connected ,connect socket:%u\n",connect_fds.size(),inet_ntoa(addr.sin_addr),ntohs(addr.sin_port),connect_fd);
  }

  
for ( iter = connect_fds.begin(); iter!=connect_fds.end(); iter++) {
   sock_fd 
= iter->first;
   addr 
= iter->second;
   
if ( FD_ISSET(sock_fd,&read_set) ) {
    recv_size 
= recv(sock_fd, recv_buf, MAXDATASIZE,0);
    
if ( recv_size == 0) {
     close(sock_fd);
     FD_CLR(sock_fd, 
&all_set);
     connect_fds.erase(sock_fd);
     printf(
"%s:%d disconnected\n",inet_ntoa(addr.sin_addr),ntohs(addr.sin_port) );
    } 
    
else {
     process_cli(sock_fd,addr,recv_buf,recv_size);
    }
   }
  }
 }
 close(listen_fd);



void process_cli(int sockfd,sockaddr_in addr,char* recvbuf, int len)
{
 
char sendbuf[MAXDATASIZE];
 printf(
"Received %s:%d message: %s\n",inet_ntoa(addr.sin_addr),ntohs(addr.sin_port), recvbuf);
 reverser(recvbuf,sendbuf,len);
 printf(
"Send To  %s:%d message: %s\n",inet_ntoa(addr.sin_addr),ntohs(addr.sin_port), sendbuf);
 send(sockfd,sendbuf,len,
0);
}


澶╀笅 2011-09-08 16:03 鍙戣〃璇勮
]]>
涓?TCP socket 紱佺敤 Nagle 綆楁硶http://www.shnenglu.com/aaxron/archive/2011/08/07/152717.html澶╀笅澶╀笅Sun, 07 Aug 2011 08:30:00 GMThttp://www.shnenglu.com/aaxron/archive/2011/08/07/152717.htmlhttp://www.shnenglu.com/aaxron/comments/152717.htmlhttp://www.shnenglu.com/aaxron/archive/2011/08/07/152717.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/152717.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/152717.html      //涓?nbsp;TCP socket 紱佺敤 Nagle 綆楁硶
銆銆
/* Create new stream socket */ 
銆銆sock 
= socket ( AF_INET, SOCK_STREAM, 0 ); 

銆銆
/* Disable the Nagle (TCP No Delay) algorithm */ 
銆銆flag 
= 1
銆銆
int ret = setsockopt ( sock, IPPROTO_TCP, TCP_NODELAY, (char *)&flag, sizeof(flag) ); 

銆銆
if (ret == -1) { 
銆銆
   printf("Couldn't setsockopt(TCP_NODELAY)\n"); 
銆銆
   exit(-1); 
銆銆}


澶╀笅 2011-08-07 16:30 鍙戣〃璇勮
]]>
浣跨敤KeepAlive媯嫻嬬綉緇滃紓甯?/title><link>http://www.shnenglu.com/aaxron/archive/2011/08/07/152703.html</link><dc:creator>澶╀笅</dc:creator><author>澶╀笅</author><pubDate>Sun, 07 Aug 2011 03:20:00 GMT</pubDate><guid>http://www.shnenglu.com/aaxron/archive/2011/08/07/152703.html</guid><wfw:comment>http://www.shnenglu.com/aaxron/comments/152703.html</wfw:comment><comments>http://www.shnenglu.com/aaxron/archive/2011/08/07/152703.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/aaxron/comments/commentRss/152703.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/aaxron/services/trackbacks/152703.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">#include </span><span style="color: #000000">"</span><span style="color: #000000">netinet/tcp.h</span><span style="color: #000000">"</span><span style="color: #000000"><br /></span><span style="color: #0000ff">int</span><span style="color: #000000"> keepAlive    </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">;        </span><span style="color: #008000">//</span><span style="color: #008000">璁懼畾KeepAlive</span><span style="color: #008000"><br /></span><span style="color: #0000ff">int</span><span style="color: #000000"> keepIdle    </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">30</span><span style="color: #000000">;        </span><span style="color: #008000">//</span><span style="color: #008000">寮濮嬮嬈eepAlive鎺㈡祴鍓嶇殑TCP絀洪棴鏃墮棿</span><span style="color: #008000"><br /></span><span style="color: #0000ff">int</span><span style="color: #000000"> keepInterval    </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">30</span><span style="color: #000000">;    </span><span style="color: #008000">//</span><span style="color: #008000">涓ゆKeepAlive鎺㈡祴闂寸殑鏃墮棿闂撮殧</span><span style="color: #008000"><br /></span><span style="color: #0000ff">int</span><span style="color: #000000"> keepCount        </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">3</span><span style="color: #000000">;    </span><span style="color: #008000">//</span><span style="color: #008000">鍒ゅ畾鏂紑鍓嶇殑KeepAlive鎺㈡祴嬈℃暟</span><span style="color: #008000"><br /></span><span style="color: #000000"><br /></span><span style="color: #0000ff">if</span><span style="color: #000000">(setsockopt(sockfd,SOL_SOCKET,SO_KEEPALIVE,(</span><span style="color: #0000ff">void</span><span style="color: #000000">*</span><span style="color: #000000">)</span><span style="color: #000000">&</span><span style="color: #000000">keepAlive,</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(keepAlive)) </span><span style="color: #000000">==</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">)<br />{<br />    printf(</span><span style="color: #000000">"</span><span style="color: #000000">Socket Option setting(SO_KEEPALIVE) fail !\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br />    </span><span style="color: #0000ff">return</span><span style="color: #000000"> FALSE;<br />}<br /><br /></span><span style="color: #0000ff">if</span><span style="color: #000000">(setsockopt(sockfd,SOL_TCP,TCP_KEEPIDLE,(</span><span style="color: #0000ff">void</span><span style="color: #000000"> </span><span style="color: #000000">*</span><span style="color: #000000">)</span><span style="color: #000000">&</span><span style="color: #000000">keepIdle,</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(keepIdle)) </span><span style="color: #000000">==</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">)<br />{<br />    printf(</span><span style="color: #000000">"</span><span style="color: #000000">Socket Option setting(SO_KEEPALIVE) fail !\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br />    </span><span style="color: #0000ff">return</span><span style="color: #000000"> FALSE;<br />}<br /><br /></span><span style="color: #0000ff">if</span><span style="color: #000000">(setsockopt(sockfd,SOL_TCP,TCP_KEEPINTVL,(</span><span style="color: #0000ff">void</span><span style="color: #000000"> </span><span style="color: #000000">*</span><span style="color: #000000">)</span><span style="color: #000000">&</span><span style="color: #000000">keepInterval,</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(keepInterval)) </span><span style="color: #000000">==</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">)<br />{<br />    printf(</span><span style="color: #000000">"</span><span style="color: #000000">Socket Option setting(TCP_KEEPIDLE) fail !\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br />    </span><span style="color: #0000ff">return</span><span style="color: #000000"> FALSE;<br />}<br /><br /></span><span style="color: #0000ff">if</span><span style="color: #000000">(setsockopt(sockfd,SOL_TCP,TCP_KEEPCNT,(</span><span style="color: #0000ff">void</span><span style="color: #000000"> </span><span style="color: #000000">*</span><span style="color: #000000">)</span><span style="color: #000000">&</span><span style="color: #000000">keepCount,</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(keepCount)) </span><span style="color: #000000">==</span><span style="color: #000000"> </span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">)<br />{<br />    printf(</span><span style="color: #000000">"</span><span style="color: #000000">Socket Option setting(TCP_KEEPCNT) fail !\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br />    </span><span style="color: #0000ff">return</span><span style="color: #000000"> FALSE;<br />}<br /></span></div><img src ="http://www.shnenglu.com/aaxron/aggbug/152703.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/aaxron/" target="_blank">澶╀笅</a> 2011-08-07 11:20 <a href="http://www.shnenglu.com/aaxron/archive/2011/08/07/152703.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>瀛楄妭欏哄簭錛氶珮浣嶄紭鍏?big-endian)鍜屼綆浣嶄紭鍏?little-endian)http://www.shnenglu.com/aaxron/archive/2011/02/28/140786.html澶╀笅澶╀笅Mon, 28 Feb 2011 05:07:00 GMThttp://www.shnenglu.com/aaxron/archive/2011/02/28/140786.htmlhttp://www.shnenglu.com/aaxron/comments/140786.htmlhttp://www.shnenglu.com/aaxron/archive/2011/02/28/140786.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/140786.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/140786.html 

瀛楄妭欏哄簭鏄寚鍗犲唴瀛樺浜庝竴涓瓧鑺傜被鍨嬬殑鏁版嵁鍦ㄥ唴瀛樹腑鐨勫瓨鏀鵑『搴忥紝閫氬父鏈夊皬绔佸ぇ绔袱縐嶅瓧鑺傞『搴忋?/span>

灝忕瀛楄妭搴忔寚浣庡瓧鑺傛暟鎹瓨鏀懼湪鍐呭瓨浣庡湴鍧澶勶紝楂樺瓧鑺傛暟鎹瓨鏀懼湪鍐呭瓨楂樺湴鍧澶勶紱

澶х瀛楄妭搴忔槸楂樺瓧鑺傛暟鎹瓨鏀懼湪浣庡湴鍧澶勶紝浣庡瓧鑺傛暟鎹瓨鏀懼湪楂樺湴鍧澶勩?/span>

鍩轟簬X86騫沖彴鐨?/font>PC鏈烘槸灝忕瀛楄妭搴忕殑

緗戠粶瀛楄妭搴? MSB 楂樺瓧鑺傚墠瀛樻硶 Most Significant Bit   (Big Edian)

涓繪満瀛楄妭搴? LSB 浣庡瓧鑺傚墠瀛樻硶 Lest Significant Bit  (Little Edian)


    鍥犱負鐜拌鐨勮綆楁満閮芥槸浠ュ叓浣嶄竴涓瓧鑺備負瀛樺偍鍗曚綅錛岄偅涔堜竴涓?6浣嶇殑鏁存暟錛屼篃灝辨槸C璇█涓殑short錛屽湪鍐呭瓨涓彲鑳芥湁涓ょ瀛樺偍欏哄簭big-endian鍜宭itte-endian銆傝冭檻涓涓猻hort鏁存暟0x3132(0x32鏄綆浣嶏紝0x31鏄珮浣?錛屾妸瀹冭祴鍊肩粰涓涓猻hort鍙橀噺錛岄偅涔堝畠鍦ㄥ唴瀛樹腑鐨勫瓨鍌ㄥ彲鑳芥湁濡備笅涓ょ鎯呭喌錛?br />


鍙互鍋氫釜瀹為獙
鍦╓indows涓婁笅濡備笅紼嬪簭
#include 
<stdio.h>
#include 
<assert.h>

int main(void)
{
        
short test;
        FILE
* fp;
         
        test 
= 0x3132/* (31ASIIC鐮佺殑'1', 32ASIIC鐮佺殑'2') */
        
if ((fp = fopen("c:\\test.txt""wb")) == NULL)
              assert(
0);
        fwrite(
&test, sizeof(short), 1, fp);
        fclose(fp);
        
return 0;
}

    鐒跺悗鍦–鐩樹笅鎵撳紑test.txt鏂囦歡錛屽彲浠ョ湅瑙佸唴瀹規槸21錛岃宼est絳変簬0x3132錛屽彲浠ユ槑鏄劇殑鐪嬪嚭鏉86鐨勫瓧鑺傞『搴忔槸浣庝綅鍦ㄥ墠銆傚鏋滄垜浠妸榪欐鍚屾牱鐨勪唬鐮佹斁鍒?big
-endian)鐨勬満鍣ㄤ笂鎵ц錛岄偅涔堟墦鍑烘潵鐨勬枃浠跺氨鏄?2銆傝繖鍦ㄦ湰鏈轟腑浣跨敤鏄病鏈夐棶棰樼殑銆備絾褰撲綘鎶婅繖涓枃浠朵粠涓涓猙ig-endian鏈哄櫒澶嶅埗鍒頒竴涓猯ittle-endian鏈哄櫒涓婃椂灝卞嚭鐜伴棶棰樹簡銆?br />    濡備笂榪頒緥瀛愶紝鎴戜滑鍦╞ig-endian鐨勬満鍣ㄤ笂鍒涘緩浜嗚繖涓猼est鏂囦歡錛屾妸鍏跺鍒跺埌little-endian鐨勬満鍣ㄤ笂鍐嶇敤fread璇誨埌涓涓猻hort閲岄潰錛屾垜浠緱鍒扮殑灝變笉鍐嶆槸0x3132鑰屾槸0x3231浜嗭紝榪欐牱璇誨埌鐨勬暟鎹氨鏄敊璇殑錛屾墍浠ュ湪涓や釜瀛楄妭欏哄簭涓嶄竴鏍風殑鏈哄櫒涓婁紶杈撴暟鎹椂闇瑕佺壒鍒皬蹇冨瓧鑺傞『搴忥紝鐞嗚В浜嗗瓧鑺傞『搴忓湪鍙互甯姪鎴戜滑鍐欏嚭縐繪琛屾洿楂樼殑浠g爜銆?br />

姝e洜涓烘湁瀛楄妭欏哄簭鐨勫樊鍒紝鎵浠ュ湪緗戠粶浼犺緭鐨勬椂鍊欏畾涔変簡鎵鏈夊瓧鑺傞『搴忕浉鍏崇殑鏁版嵁閮戒嬌鐢╞ig
-endian錛孊SD鐨勪唬鐮佷腑瀹氫箟浜嗗洓涓畯鏉ョ悊錛?br />#define ntohs(n)      //緗戠粶瀛楄妭欏哄簭鍒頒富鏈哄瓧鑺傞『搴?nbsp;n浠h〃net, h浠h〃host, s浠h〃short
#define htons(n)      //涓繪満瀛楄妭欏哄簭鍒扮綉緇滃瓧鑺傞『搴?nbsp;n浠h〃net, h浠h〃host, s浠h〃short
#define ntohl(n)      //緗戠粶瀛楄妭欏哄簭鍒頒富鏈哄瓧鑺傞『搴?nbsp;n浠h〃net, h浠h〃host, s浠h〃long
#define htonl(n)      //涓繪満瀛楄妭欏哄簭鍒扮綉緇滃瓧鑺傞『搴?nbsp;n浠h〃net, h浠h〃host, s浠h〃long



澶╀笅 2011-02-28 13:07 鍙戣〃璇勮
]]>
sockaddr 鍜?sockaddr_in 綾誨瀷鎸囬拡杞崲鍒嗘瀽http://www.shnenglu.com/aaxron/archive/2011/01/11/138356.html澶╀笅澶╀笅Tue, 11 Jan 2011 13:19:00 GMThttp://www.shnenglu.com/aaxron/archive/2011/01/11/138356.htmlhttp://www.shnenglu.com/aaxron/comments/138356.htmlhttp://www.shnenglu.com/aaxron/archive/2011/01/11/138356.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/138356.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/138356.html#include <iostream>
#include 
<afxwin.h>
#include 
<Winsock2.h>
#pragma comment(lib,
"Ws2_32.lib")
int main(){
    sockaddr_in addrSock1;
    addrSock1.sin_family 
= AF_INET;
    addrSock1.sin_port   
= htons(5555);
    addrSock1.sin_addr.s_addr 
= inet_addr("127.0.0.1");

    sockaddr
* addrSock2;

    addrSock2 
= (sockaddr*)&addrSock1;

    u_long uPort1 
= htons(5555);
    u_long uPort2 
= MAKEWORD(addrSock2->sa_data[0],addrSock2->sa_data[1]);
    
return 0;
}

//娉ㄦ剰 addSock2->sa_data[0],addSock2->sa_data[1]鍙奙AKEWORD


澶╀笅 2011-01-11 21:19 鍙戣〃璇勮
]]>
[鍘熷垱]灝佽浜嗕釜鍩轟簬Libcurl鐨勭被,澶у璇勮瘎,灝芥儏鎷嶇爾.http://www.shnenglu.com/aaxron/archive/2010/11/18/133975.html澶╀笅澶╀笅Thu, 18 Nov 2010 06:15:00 GMThttp://www.shnenglu.com/aaxron/archive/2010/11/18/133975.htmlhttp://www.shnenglu.com/aaxron/comments/133975.htmlhttp://www.shnenglu.com/aaxron/archive/2010/11/18/133975.html#Feedback6http://www.shnenglu.com/aaxron/comments/commentRss/133975.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/133975.html  1 #pragma once  2 #include &...  闃呰鍏ㄦ枃

澶╀笅 2010-11-18 14:15 鍙戣〃璇勮
]]>
亚洲国产精品无码久久久蜜芽| 久久久久国产一级毛片高清版| 久久精品国产亚洲欧美| 日韩人妻无码一区二区三区久久99| 91精品国产综合久久香蕉| 国产精品久久毛片完整版| 97久久天天综合色天天综合色hd| 思思久久精品在热线热| 97精品伊人久久大香线蕉| 久久国内免费视频| 无码国内精品久久综合88| 久久精品青青草原伊人| 亚洲av成人无码久久精品| 久久亚洲私人国产精品| 久久国产精品久久精品国产| 国产精品久久自在自线观看| 国产精品99精品久久免费| 狠狠干狠狠久久| 久久亚洲国产精品123区| 久久国产劲爆AV内射—百度| 亚洲日韩中文无码久久| 精品久久久久久中文字幕| 伊人久久大香线蕉影院95| 亚洲精品成人网久久久久久| 久久精品国产亚洲av麻豆蜜芽| 无码AV波多野结衣久久| 日韩一区二区久久久久久| 亚洲午夜无码久久久久小说| 无码AV波多野结衣久久| 国产精品久久久天天影视香蕉 | 伊人色综合久久天天网| 综合久久一区二区三区 | 国内精品久久国产大陆| 亚洲成人精品久久| 国产精品乱码久久久久久软件| 久久久久高潮毛片免费全部播放| 国产日韩欧美久久| 无码人妻久久一区二区三区| 国内精品久久久久久不卡影院| 久久亚洲精品无码aⅴ大香 | a高清免费毛片久久|