锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品久久久久7777婷婷,久久福利毛片,欧美三级乱码http://m.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://m.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://m.shnenglu.com/aaxron/archive/2013/06/13/200986.html</guid><wfw:comment>http://m.shnenglu.com/aaxron/comments/200986.html</wfw:comment><comments>http://m.shnenglu.com/aaxron/archive/2013/06/13/200986.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/aaxron/comments/commentRss/200986.html</wfw:commentRss><trackback:ping>http://m.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://m.shnenglu.com/aaxron/aggbug/200986.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/aaxron/" target="_blank">澶╀笅</a> 2013-06-13 16:29 <a href="http://m.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://m.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://m.shnenglu.com/aaxron/archive/2012/10/09/193070.html</guid><wfw:comment>http://m.shnenglu.com/aaxron/comments/193070.html</wfw:comment><comments>http://m.shnenglu.com/aaxron/archive/2012/10/09/193070.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/aaxron/comments/commentRss/193070.html</wfw:commentRss><trackback:ping>http://m.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://m.shnenglu.com/aaxron/archive/2012/10/09/193070.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/aaxron/aggbug/193070.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/aaxron/" target="_blank">澶╀笅</a> 2012-10-09 17:22 <a href="http://m.shnenglu.com/aaxron/archive/2012/10/09/193070.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>getaddrinfo鍑芥暟http://m.shnenglu.com/aaxron/archive/2012/05/15/174986.html澶╀笅澶╀笅Tue, 15 May 2012 08:57:00 GMThttp://m.shnenglu.com/aaxron/archive/2012/05/15/174986.htmlhttp://m.shnenglu.com/aaxron/comments/174986.htmlhttp://m.shnenglu.com/aaxron/archive/2012/05/15/174986.html#Feedback0http://m.shnenglu.com/aaxron/comments/commentRss/174986.htmlhttp://m.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://m.shnenglu.com/aaxron/archive/2012/04/27/172891.html澶╀笅澶╀笅Fri, 27 Apr 2012 01:14:00 GMThttp://m.shnenglu.com/aaxron/archive/2012/04/27/172891.htmlhttp://m.shnenglu.com/aaxron/comments/172891.htmlhttp://m.shnenglu.com/aaxron/archive/2012/04/27/172891.html#Feedback0http://m.shnenglu.com/aaxron/comments/commentRss/172891.htmlhttp://m.shnenglu.com/aaxron/services/trackbacks/172891.html鍦ㄥ彂閫佺錛屼竴嬈″彂閫?092涓瓧鑺傦紝鍦ㄦ帴鏀剁錛屼竴嬈℃帴鏀?092涓瓧鑺傦紝浣嗘槸鍦ㄦ帴鏀剁錛屽伓灝斾細鍑虹幇 socket.receive 鎺ユ敹涓嶅叏鐨勬儏鍐?nbsp;錛宺et = ...  闃呰鍏ㄦ枃

澶╀笅 2012-04-27 09:14 鍙戣〃璇勮
]]>
TCP涓嶶DP鐨勪笉鍚屾帴鍖呭鐞嗘柟寮?/title><link>http://m.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://m.shnenglu.com/aaxron/archive/2012/01/06/163734.html</guid><wfw:comment>http://m.shnenglu.com/aaxron/comments/163734.html</wfw:comment><comments>http://m.shnenglu.com/aaxron/archive/2012/01/06/163734.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/aaxron/comments/commentRss/163734.html</wfw:commentRss><trackback:ping>http://m.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://m.shnenglu.com/aaxron/aggbug/163734.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/aaxron/" target="_blank">澶╀笅</a> 2012-01-06 17:03 <a href="http://m.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://m.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://m.shnenglu.com/aaxron/archive/2011/10/12/158137.html</guid><wfw:comment>http://m.shnenglu.com/aaxron/comments/158137.html</wfw:comment><comments>http://m.shnenglu.com/aaxron/archive/2011/10/12/158137.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/aaxron/comments/commentRss/158137.html</wfw:commentRss><trackback:ping>http://m.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://m.shnenglu.com/aaxron/aggbug/158137.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/aaxron/" target="_blank">澶╀笅</a> 2011-10-12 16:01 <a href="http://m.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://m.shnenglu.com/aaxron/archive/2011/09/08/155363.html澶╀笅澶╀笅Thu, 08 Sep 2011 08:06:00 GMThttp://m.shnenglu.com/aaxron/archive/2011/09/08/155363.htmlhttp://m.shnenglu.com/aaxron/comments/155363.htmlhttp://m.shnenglu.com/aaxron/archive/2011/09/08/155363.html#Feedback0http://m.shnenglu.com/aaxron/comments/commentRss/155363.htmlhttp://m.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://m.shnenglu.com/aaxron/archive/2011/09/08/155362.html澶╀笅澶╀笅Thu, 08 Sep 2011 08:06:00 GMThttp://m.shnenglu.com/aaxron/archive/2011/09/08/155362.htmlhttp://m.shnenglu.com/aaxron/comments/155362.htmlhttp://m.shnenglu.com/aaxron/archive/2011/09/08/155362.html#Feedback0http://m.shnenglu.com/aaxron/comments/commentRss/155362.htmlhttp://m.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://m.shnenglu.com/aaxron/archive/2011/09/08/155361.html澶╀笅澶╀笅Thu, 08 Sep 2011 08:04:00 GMThttp://m.shnenglu.com/aaxron/archive/2011/09/08/155361.htmlhttp://m.shnenglu.com/aaxron/comments/155361.htmlhttp://m.shnenglu.com/aaxron/archive/2011/09/08/155361.html#Feedback0http://m.shnenglu.com/aaxron/comments/commentRss/155361.htmlhttp://m.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://m.shnenglu.com/aaxron/archive/2011/09/08/155360.html澶╀笅澶╀笅Thu, 08 Sep 2011 08:03:00 GMThttp://m.shnenglu.com/aaxron/archive/2011/09/08/155360.htmlhttp://m.shnenglu.com/aaxron/comments/155360.htmlhttp://m.shnenglu.com/aaxron/archive/2011/09/08/155360.html#Feedback0http://m.shnenglu.com/aaxron/comments/commentRss/155360.htmlhttp://m.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://m.shnenglu.com/aaxron/archive/2011/08/07/152717.html澶╀笅澶╀笅Sun, 07 Aug 2011 08:30:00 GMThttp://m.shnenglu.com/aaxron/archive/2011/08/07/152717.htmlhttp://m.shnenglu.com/aaxron/comments/152717.htmlhttp://m.shnenglu.com/aaxron/archive/2011/08/07/152717.html#Feedback0http://m.shnenglu.com/aaxron/comments/commentRss/152717.htmlhttp://m.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://m.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://m.shnenglu.com/aaxron/archive/2011/08/07/152703.html</guid><wfw:comment>http://m.shnenglu.com/aaxron/comments/152703.html</wfw:comment><comments>http://m.shnenglu.com/aaxron/archive/2011/08/07/152703.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/aaxron/comments/commentRss/152703.html</wfw:commentRss><trackback:ping>http://m.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://m.shnenglu.com/aaxron/aggbug/152703.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/aaxron/" target="_blank">澶╀笅</a> 2011-08-07 11:20 <a href="http://m.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://m.shnenglu.com/aaxron/archive/2011/02/28/140786.html澶╀笅澶╀笅Mon, 28 Feb 2011 05:07:00 GMThttp://m.shnenglu.com/aaxron/archive/2011/02/28/140786.htmlhttp://m.shnenglu.com/aaxron/comments/140786.htmlhttp://m.shnenglu.com/aaxron/archive/2011/02/28/140786.html#Feedback0http://m.shnenglu.com/aaxron/comments/commentRss/140786.htmlhttp://m.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://m.shnenglu.com/aaxron/archive/2011/01/11/138356.html澶╀笅澶╀笅Tue, 11 Jan 2011 13:19:00 GMThttp://m.shnenglu.com/aaxron/archive/2011/01/11/138356.htmlhttp://m.shnenglu.com/aaxron/comments/138356.htmlhttp://m.shnenglu.com/aaxron/archive/2011/01/11/138356.html#Feedback0http://m.shnenglu.com/aaxron/comments/commentRss/138356.htmlhttp://m.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://m.shnenglu.com/aaxron/archive/2010/11/18/133975.html澶╀笅澶╀笅Thu, 18 Nov 2010 06:15:00 GMThttp://m.shnenglu.com/aaxron/archive/2010/11/18/133975.htmlhttp://m.shnenglu.com/aaxron/comments/133975.htmlhttp://m.shnenglu.com/aaxron/archive/2010/11/18/133975.html#Feedback6http://m.shnenglu.com/aaxron/comments/commentRss/133975.htmlhttp://m.shnenglu.com/aaxron/services/trackbacks/133975.html  1 #pragma once  2 #include &...  闃呰鍏ㄦ枃

澶╀笅 2010-11-18 14:15 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美在线观看视频| 久久成人久久爱| 欧美一区在线直播| 一区二区三区在线免费视频| 亚洲女人天堂成人av在线| 西瓜成人精品人成网站| 久久国产黑丝| 最新高清无码专区| 99精品久久| 国产自产在线视频一区| 亚洲激情啪啪| 欧美二区不卡| 亚洲一区二区三区免费视频| 欧美一级久久| 亚洲神马久久| 久久嫩草精品久久久精品| 亚洲午夜精品网| 久久一区二区三区四区五区| 亚洲一区激情| 免费欧美在线视频| 久久精品国产精品亚洲精品| 欧美精品少妇一区二区三区| 久久人人爽人人爽| 国产精品嫩草久久久久| 亚洲韩国精品一区| 激情综合久久| 午夜亚洲福利在线老司机| 亚洲乱码国产乱码精品精98午夜 | 免费久久99精品国产自| 亚洲免费在线视频| 欧美精品系列| 你懂的成人av| 激情综合自拍| 欧美影院视频| 久久se精品一区二区| 国产精品第13页| 夜夜嗨网站十八久久| 日韩一级成人av| 欧美福利视频| 亚洲国产视频a| 亚洲啪啪91| 麻豆freexxxx性91精品| 美日韩精品视频免费看| 国产综合激情| 久久精品日韩欧美| 玖玖精品视频| 在线日韩欧美视频| 欧美中文字幕视频在线观看| 亚洲欧美乱综合| 国产精品老牛| 亚洲欧美综合一区| 性伦欧美刺激片在线观看| 国产精品美女久久久浪潮软件 | 国模精品一区二区三区色天香| 亚洲综合好骚| 欧美在线一二三| 国产一区二区三区四区五区美女 | 久久激情一区| 国外成人网址| 国内免费精品永久在线视频| 亚洲欧洲精品一区二区精品久久久| 国产亚洲成av人在线观看导航| 亚洲一区二区三区在线视频| 亚洲香蕉视频| 国产精品高清网站| 亚洲午夜精品网| 欧美一区精品| 一区在线视频| 欧美黄在线观看| 中日韩美女免费视频网址在线观看 | 免费欧美日韩国产三级电影| 亚洲国产精品一区二区第四页av| 日韩午夜av| 亚洲六月丁香色婷婷综合久久| 久久婷婷国产麻豆91天堂| 欧美高清一区| 亚洲小少妇裸体bbw| 国产老肥熟一区二区三区| 久久国产精品久久国产精品| 欧美福利视频| 亚洲影音一区| 影音先锋久久| 欧美性大战久久久久| 欧美一区久久| 亚洲国产精品成人一区二区| 亚洲一区二区在线播放| 国产一区二区三区在线观看网站| 久久一区中文字幕| 日韩写真在线| 久久手机免费观看| 亚洲激情影院| 国产精品二区在线观看| 久久久久这里只有精品| 妖精成人www高清在线观看| 久久久www| 亚洲视频一区在线观看| 激情欧美日韩一区| 国产精品v片在线观看不卡| 久久尤物视频| 校园春色综合网| 亚洲精品综合精品自拍| 小黄鸭精品aⅴ导航网站入口| 亚洲高清色综合| 国产日韩在线看| 欧美日本高清| 久久久蜜桃一区二区人| 亚洲欧洲99久久| 亚洲欧洲三级| 狠狠狠色丁香婷婷综合激情| 欧美调教vk| 欧美黄色网络| 久久婷婷丁香| 欧美在线播放| 亚洲欧美清纯在线制服| 99国产一区二区三精品乱码| 欧美激情在线免费观看| 可以看av的网站久久看| 欧美在线日韩在线| 亚洲一区二区三区三| 日韩一级免费| 日韩视频三区| 日韩视频在线你懂得| 亚洲国产精品一区二区www在线 | 亚洲国产成人91精品| 久久九九99视频| 性视频1819p久久| 亚洲欧美国产日韩天堂区| 亚洲精品日韩欧美| 亚洲第一网站| 亚洲国产第一| 亚洲国产精品t66y| 亚洲激情婷婷| 亚洲精品午夜| 99国产精品久久久久久久成人热| 亚洲国产精品精华液2区45| 影音先锋久久久| 在线观看av不卡| 亚洲国产精品一区二区第一页 | 亚洲剧情一区二区| 亚洲高清色综合| 亚洲第一福利社区| 亚洲第一在线综合在线| 亚洲国产另类久久精品| 亚洲精品免费在线播放| 99热这里只有成人精品国产| 日韩视频在线免费观看| 日韩一级精品视频在线观看| 一本久道久久综合狠狠爱| 9l国产精品久久久久麻豆| 一区二区欧美国产| 亚洲欧美日韩天堂| 久久成人一区二区| 老司机午夜精品视频在线观看| 免费成人高清视频| 欧美日本一区| 国产精品视频xxx| 国产亚洲精品高潮| 亚洲电影免费在线观看| 日韩视频一区二区三区| 亚洲一区二区三区精品视频| 久久精品成人一区二区三区| 麻豆久久婷婷| 亚洲精品国产视频| 亚洲欧美日韩国产综合在线| 久久久精品日韩欧美| 欧美精品久久久久久久久久| 欧美日韩综合另类| 国产一区二区成人| 亚洲日本成人在线观看| 亚洲欧美日韩国产| 免费一区视频| 一本不卡影院| 久久一区二区视频| 国产精品久久77777| 一区二区视频免费完整版观看| 亚洲精品国产视频| 欧美制服第一页| 亚洲国产一区二区在线| 午夜日韩福利| 欧美国产专区| 国产亚洲欧美日韩精品| 欧美日韩在线影院| 国产日韩精品久久久| 亚洲免费人成在线视频观看| 欧美一区2区视频在线观看| 欧美成人午夜剧场免费观看| 一区二区三区国产盗摄| 亚洲狼人综合| 国产精品一区免费视频| 亚洲欧洲精品一区二区三区| 亚洲中字黄色| 亚洲电影在线免费观看| 亚洲在线一区二区| 欧美激情91| 国产在线国偷精品产拍免费yy| 在线综合亚洲欧美在线视频| 欧美成人在线免费视频| 亚洲制服av| 欧美日韩一区二区国产| 亚洲黄色有码视频|