锘??xml version="1.0" encoding="utf-8" standalone="yes"?>日产精品99久久久久久,久久www免费人成看国产片,99久久精品国产一区二区 http://www.shnenglu.com/izualzhy/category/19725.html鍧氭寔 鐩鎬俊鑷繁zh-cnThu, 09 Aug 2012 17:44:19 GMTThu, 09 Aug 2012 17:44:19 GMT60socket緙栧啓綆鍗曡亰澶╃▼搴?/title><link>http://www.shnenglu.com/izualzhy/archive/2012/08/04/186269.html</link><dc:creator>izualzhy</dc:creator><author>izualzhy</author><pubDate>Sat, 04 Aug 2012 09:15:00 GMT</pubDate><guid>http://www.shnenglu.com/izualzhy/archive/2012/08/04/186269.html</guid><wfw:comment>http://www.shnenglu.com/izualzhy/comments/186269.html</wfw:comment><comments>http://www.shnenglu.com/izualzhy/archive/2012/08/04/186269.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/izualzhy/comments/commentRss/186269.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/izualzhy/services/trackbacks/186269.html</trackback:ping><description><![CDATA[<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a8c5b14a-54d0-47f1-bea3-bf8e4ee3e555" class="wlWriterEditableSmartContent">Technorati 鏍囩: <a rel="tag">socket</a></div> <p>綆楁槸socket鐨勪竴涓皬緇冧範(fàn)錛屽厤寰楄嚜宸辯溂楂樻墜浣庛?/p> <p>鑱婂ぉ涓鏂瑰厖褰搒erver錛岃屽彟涓鏂瑰厖褰揷lient銆?/p> <p>鍦╝ccept浣跨敤涓婂崱浜嗗緢涔咃紝涓鐩存彁紺築ad Address銆傜粨鏋滃彂鐜版渶鍚庝竴涓弬鏁版湁鐨勬槸int,鏈夌殑鏄痠nt*錛岀洰鍓嶈繕涓嶇悊瑙f槸涓轟粈涔堛?/p> <p>鐩存帴璐翠笅紼嬪簭錛岀洰鍓嶅彧鑳界瓑瀵規(guī)柟璇翠竴鍙ヨ瘽鍚庢墠鑳借錛屼笉鐭ラ亾鎬庝箞鎵嶈兘鏀硅繘涓涓嬪憿錛?/p> <p>鎯沖埌鐨勫氨鏄兂qq鑱婂ぉ紿楀彛閭f牱錛岃緭鍏ヤ笌鏄劇ず瑕佸垎寮鎵嶈銆?/p> <p>濡傛灉瀹炲湪terminal錛屽鏋滆緭鍏ョ殑鏃跺欏鏂圭殑娑堟伅榪囨潵錛屽簲璇ユ庝箞鍔烇紵</p> <p>涓鏂歸潰瑕侀殢鏃跺彲浠ヨ緭鍏?scanf絳夊緟)錛屼竴鏂歸潰瑕侀殢鏃舵帴鏀惰緭鍑猴紝搴旇鏃惰浣跨敤澶氱嚎紼嬫病閿欑殑銆備笉榪囪繕鏄病鎯沖埌鎬庝箞鍏蜂綋瑙e喅.</p> <p>璐翠笅鐜版湁鐨勪唬鐮?/p> <p>鍏呭綋瀹㈡埛绔殑涓鏂癸細(xì)</p><pre class="code"><span style="color: #2e53d1"><pre class="code"><span style="color: #937a42">/* * ===================================================================================== * Filename: TalkServer.c * Description: * * Version: 1.0 * Created: 08/04/2012 02:35:01 PM * * Author: zhy (), izualzhy@163.com * ===================================================================================== */ </span><span style="color: #400080">#include </span><span style="color: #259241"><stdio.h> </span><span style="color: #400080">#include </span><span style="color: #259241"><error.h> </span><span style="color: #400080">#include </span><span style="color: #259241"><sys/socket.h> </span><span style="color: #400080">#include </span><span style="color: #259241"><netinet/in.h> </span><span style="color: #400080">#define </span>TALKPORT <span style="color: #259241">1234 </span><span style="color: #400080">int </span>main<span style="color: #2e53d1">() { </span><span style="color: #400080">int </span>sockfd<span style="color: #2e53d1">, </span>clientSockfd<span style="color: #2e53d1">, </span>recvbytes<span style="color: #2e53d1">; </span><span style="color: #400080">struct </span>sockaddr_in myAddr<span style="color: #2e53d1">; </span><span style="color: #400080">struct </span>sockaddr_in clientAddr<span style="color: #2e53d1">; </span><span style="color: #400080">if </span><span style="color: #2e53d1">((</span>sockfd <span style="color: #2e53d1">= </span>socket<span style="color: #2e53d1">(</span>AF_INET<span style="color: #2e53d1">, </span>SOCK_STREAM<span style="color: #2e53d1">, </span><span style="color: #259241">0</span><span style="color: #2e53d1">)) == -</span><span style="color: #259241">1</span><span style="color: #2e53d1">) { </span>perror<span style="color: #2e53d1">(</span><span style="color: #259241">"socket create error\n"</span><span style="color: #2e53d1">); </span>exit<span style="color: #2e53d1">(</span><span style="color: #259241">1</span><span style="color: #2e53d1">); } </span>myAddr<span style="color: #2e53d1">.</span>sin_family <span style="color: #2e53d1">= </span>AF_INET<span style="color: #2e53d1">; </span>myAddr<span style="color: #2e53d1">.</span>sin_port <span style="color: #2e53d1">= </span>htons<span style="color: #2e53d1">(</span>TALKPORT<span style="color: #2e53d1">); </span>myAddr<span style="color: #2e53d1">.</span>sin_addr<span style="color: #2e53d1">.</span>s_addr <span style="color: #2e53d1">= </span>INADDR_ANY<span style="color: #2e53d1">; </span>bzero<span style="color: #2e53d1">(&</span>myAddr<span style="color: #2e53d1">.</span>sin_zero<span style="color: #2e53d1">, </span><span style="color: #259241">8</span><span style="color: #2e53d1">); </span><span style="color: #400080">if </span><span style="color: #2e53d1">(</span>bind<span style="color: #2e53d1">(</span>sockfd<span style="color: #2e53d1">, (</span><span style="color: #400080">struct </span>sockaddr<span style="color: #2e53d1">*)&</span>myAddr<span style="color: #2e53d1">, </span><span style="color: #400080">sizeof</span><span style="color: #2e53d1">(</span><span style="color: #400080">struct </span>sockaddr<span style="color: #2e53d1">)) == -</span><span style="color: #259241">1</span><span style="color: #2e53d1">) { </span>perror<span style="color: #2e53d1">(</span><span style="color: #259241">"socket bind error\n"</span><span style="color: #2e53d1">); </span>exit<span style="color: #2e53d1">(</span><span style="color: #259241">1</span><span style="color: #2e53d1">); } </span><span style="color: #400080">if </span><span style="color: #2e53d1">(</span>listen<span style="color: #2e53d1">(</span>sockfd<span style="color: #2e53d1">, </span><span style="color: #259241">10</span><span style="color: #2e53d1">) == -</span><span style="color: #259241">1</span><span style="color: #2e53d1">) { </span>printf<span style="color: #2e53d1">(</span><span style="color: #259241">"socket listen error\n"</span><span style="color: #2e53d1">); </span>exit<span style="color: #2e53d1">(</span><span style="color: #259241">1</span><span style="color: #2e53d1">); } </span><span style="color: #400080">while </span><span style="color: #2e53d1">(</span><span style="color: #259241">1</span><span style="color: #2e53d1">) { </span><span style="color: #400080">unsigned int </span>sin_size <span style="color: #2e53d1">= </span><span style="color: #400080">sizeof</span><span style="color: #2e53d1">(</span><span style="color: #400080">struct </span>sockaddr_in<span style="color: #2e53d1">); </span><span style="color: #400080">if </span><span style="color: #2e53d1">((</span>clientSockfd <span style="color: #2e53d1">= </span>accept<span style="color: #2e53d1">(</span>sockfd<span style="color: #2e53d1">, (</span><span style="color: #400080">struct </span>sockaddr<span style="color: #2e53d1">*)&</span>clientAddr<span style="color: #2e53d1">, &</span>sin_size<span style="color: #2e53d1">)) == -</span><span style="color: #259241">1</span><span style="color: #2e53d1">) { </span>perror<span style="color: #2e53d1">(</span><span style="color: #259241">"socket accept error"</span><span style="color: #2e53d1">); </span>exit<span style="color: #2e53d1">(</span><span style="color: #259241">1</span><span style="color: #2e53d1">); } </span><span style="color: #400080">else </span><span style="color: #2e53d1">{ </span>send<span style="color: #2e53d1">(</span>clientSockfd<span style="color: #2e53d1">, </span><span style="color: #259241">"u got me!"</span><span style="color: #2e53d1">, </span><span style="color: #259241">10</span><span style="color: #2e53d1">, </span><span style="color: #259241">0</span><span style="color: #2e53d1">); </span><span style="color: #400080">break</span><span style="color: #2e53d1">; } } </span><span style="color: #400080">while </span><span style="color: #2e53d1">(</span><span style="color: #259241">1</span><span style="color: #2e53d1">) { </span><span style="color: #400080">char </span>recvmsg<span style="color: #2e53d1">[</span><span style="color: #259241">256</span><span style="color: #2e53d1">] = {</span><span style="color: #259241">0</span><span style="color: #2e53d1">}; </span><span style="color: #400080">if </span><span style="color: #2e53d1">((</span>recvbytes <span style="color: #2e53d1">= </span>recv<span style="color: #2e53d1">(</span>clientSockfd<span style="color: #2e53d1">, </span>recvmsg<span style="color: #2e53d1">, </span><span style="color: #259241">256</span><span style="color: #2e53d1">, </span><span style="color: #259241">0</span><span style="color: #2e53d1">)) == -</span><span style="color: #259241">1</span><span style="color: #2e53d1">) { </span>printf<span style="color: #2e53d1">(</span><span style="color: #259241">"recv msg: %s error\n"</span><span style="color: #2e53d1">, </span>recvmsg<span style="color: #2e53d1">); </span>exit<span style="color: #2e53d1">(</span><span style="color: #259241">1</span><span style="color: #2e53d1">); } </span><span style="color: #400080">else </span><span style="color: #2e53d1">{ </span>recvmsg<span style="color: #2e53d1">[</span>recvbytes<span style="color: #2e53d1">] = </span><span style="color: #259241">'\0'</span><span style="color: #2e53d1">; </span><span style="color: #400080">if </span><span style="color: #2e53d1">(</span>strcmp<span style="color: #2e53d1">(</span>recvmsg<span style="color: #2e53d1">, </span><span style="color: #259241">"greedisgood"</span><span style="color: #2e53d1">) == </span><span style="color: #259241">0</span><span style="color: #2e53d1">) { </span>send<span style="color: #2e53d1">(</span>clientSockfd<span style="color: #2e53d1">, </span><span style="color: #259241">"greedisgood"</span><span style="color: #2e53d1">, </span><span style="color: #259241">12</span><span style="color: #2e53d1">, </span><span style="color: #259241">0</span><span style="color: #2e53d1">); </span><span style="color: #400080">break</span><span style="color: #2e53d1">; } </span>printf<span style="color: #2e53d1">(</span><span style="color: #259241">"says: %s\n"</span><span style="color: #2e53d1">, </span>recvmsg<span style="color: #2e53d1">); </span><span style="color: #400080">char </span>sendmsg<span style="color: #2e53d1">[</span><span style="color: #259241">256</span><span style="color: #2e53d1">] = {</span><span style="color: #259241">0</span><span style="color: #2e53d1">}; </span>printf<span style="color: #2e53d1">(</span><span style="color: #259241">">: "</span><span style="color: #2e53d1">); </span>gets<span style="color: #2e53d1">(</span>sendmsg<span style="color: #2e53d1">); </span><span style="color: #400080">if </span><span style="color: #2e53d1">(</span>send<span style="color: #2e53d1">(</span>clientSockfd<span style="color: #2e53d1">, </span>sendmsg<span style="color: #2e53d1">, </span><span style="color: #400080">sizeof</span><span style="color: #2e53d1">(</span>sendmsg<span style="color: #2e53d1">), </span><span style="color: #259241">0</span><span style="color: #2e53d1">) == -</span><span style="color: #259241">1</span><span style="color: #2e53d1">) { </span>printf<span style="color: #2e53d1">(</span><span style="color: #259241">"send msg: %s error\n"</span><span style="color: #2e53d1">, </span>sendmsg<span style="color: #2e53d1">); </span>exit<span style="color: #2e53d1">(</span><span style="color: #259241">1</span><span style="color: #2e53d1">); } } } </span>close<span style="color: #2e53d1">(</span>clientSockfd<span style="color: #2e53d1">); </span>close<span style="color: #2e53d1">(</span>sockfd<span style="color: #2e53d1">); </span><span style="color: #400080">return </span><span style="color: #259241">0</span><span style="color: #2e53d1">; } </span></pre> <font color="#000000" face="寰蔣闆呴粦">鍏呭綋瀹㈡埛绔殑涓鏂癸細(xì)</font></span></pre><pre class="code"><span style="color: #937a42"><pre class="code"><span style="color: #937a42">/* * ===================================================================================== * Filename: TalkClient.c * Description: talker as client * * Version: 1.0 * Created: 08/04/2012 03:05:52 PM * * Author: zhy (), izualzhy@163.com * ===================================================================================== */ </span><span style="color: #400080">#include </span><span style="color: #259241"><string.h> </span><span style="color: #400080">#include </span><span style="color: #259241"><stdio.h> </span><span style="color: #400080">#include </span><span style="color: #259241"><sys/socket.h> </span><span style="color: #400080">#include </span><span style="color: #259241"><netinet/in.h> </span><span style="color: #400080">#include </span><span style="color: #259241"><netdb.h> </span><span style="color: #400080">#define </span>TALKPORT <span style="color: #259241">1234 </span><span style="color: #400080">int </span>main<span style="color: #2e53d1">(</span><span style="color: #400080">int </span>argc<span style="color: #2e53d1">, </span><span style="color: #400080">char</span><span style="color: #2e53d1">* </span>argv<span style="color: #2e53d1">[]) { </span><span style="color: #400080">int </span>serverSockfd<span style="color: #2e53d1">, </span>recvbytes<span style="color: #2e53d1">; </span><span style="color: #400080">struct </span>sockaddr_in serverSockAddr<span style="color: #2e53d1">; </span><span style="color: #400080">struct </span>hostent<span style="color: #2e53d1">* </span>host<span style="color: #2e53d1">; </span><span style="color: #400080">if </span><span style="color: #2e53d1">((</span>serverSockfd <span style="color: #2e53d1">= </span>socket<span style="color: #2e53d1">(</span>AF_INET<span style="color: #2e53d1">, </span>SOCK_STREAM<span style="color: #2e53d1">, </span><span style="color: #259241">0</span><span style="color: #2e53d1">)) == -</span><span style="color: #259241">1</span><span style="color: #2e53d1">) { </span>printf<span style="color: #2e53d1">(</span><span style="color: #259241">"socket create error\n"</span><span style="color: #2e53d1">); </span>exit<span style="color: #2e53d1">(</span><span style="color: #259241">1</span><span style="color: #2e53d1">); } </span><span style="color: #400080">if </span><span style="color: #2e53d1">((</span>host <span style="color: #2e53d1">= </span>gethostbyname<span style="color: #2e53d1">(</span>argv<span style="color: #2e53d1">[</span><span style="color: #259241">1</span><span style="color: #2e53d1">])) == </span>NULL<span style="color: #2e53d1">) { </span>printf<span style="color: #2e53d1">(</span><span style="color: #259241">"gethostbyname error\n"</span><span style="color: #2e53d1">); </span>exit<span style="color: #2e53d1">(</span><span style="color: #259241">1</span><span style="color: #2e53d1">); } </span>serverSockAddr<span style="color: #2e53d1">.</span>sin_family <span style="color: #2e53d1">= </span>AF_INET<span style="color: #2e53d1">; </span>serverSockAddr<span style="color: #2e53d1">.</span>sin_port <span style="color: #2e53d1">= </span>htons<span style="color: #2e53d1">(</span>TALKPORT<span style="color: #2e53d1">); </span>serverSockAddr<span style="color: #2e53d1">.</span>sin_addr <span style="color: #2e53d1">= *((</span><span style="color: #400080">struct </span>in_addr<span style="color: #2e53d1">*)</span>host<span style="color: #2e53d1">-></span>h_addr<span style="color: #2e53d1">); </span>bzero<span style="color: #2e53d1">(&</span>serverSockAddr<span style="color: #2e53d1">.</span>sin_zero<span style="color: #2e53d1">, </span><span style="color: #259241">8</span><span style="color: #2e53d1">); </span>printf<span style="color: #2e53d1">(</span><span style="color: #259241">"server: %s\n"</span><span style="color: #2e53d1">, </span>inet_ntoa<span style="color: #2e53d1">(</span>serverSockAddr<span style="color: #2e53d1">.</span>sin_addr<span style="color: #2e53d1">)); </span><span style="color: #400080">if </span><span style="color: #2e53d1">(</span>connect<span style="color: #2e53d1">(</span>serverSockfd<span style="color: #2e53d1">, (</span><span style="color: #400080">struct </span>sockaddr<span style="color: #2e53d1">*)(&</span>serverSockAddr<span style="color: #2e53d1">), </span><span style="color: #400080">sizeof</span><span style="color: #2e53d1">(</span><span style="color: #400080">struct </span>sockaddr<span style="color: #2e53d1">)) == -</span><span style="color: #259241">1</span><span style="color: #2e53d1">) { </span>printf<span style="color: #2e53d1">(</span><span style="color: #259241">"socket connect error\n"</span><span style="color: #2e53d1">); </span>exit<span style="color: #2e53d1">(</span><span style="color: #259241">1</span><span style="color: #2e53d1">); } </span><span style="color: #400080">while </span><span style="color: #2e53d1">(</span><span style="color: #259241">1</span><span style="color: #2e53d1">) { </span><span style="color: #400080">char </span>recvmsg<span style="color: #2e53d1">[</span><span style="color: #259241">256</span><span style="color: #2e53d1">] = {</span><span style="color: #259241">0</span><span style="color: #2e53d1">}; </span><span style="color: #400080">if </span><span style="color: #2e53d1">((</span>recvbytes <span style="color: #2e53d1">= </span>recv<span style="color: #2e53d1">(</span>serverSockfd<span style="color: #2e53d1">, </span>recvmsg<span style="color: #2e53d1">, </span><span style="color: #259241">256</span><span style="color: #2e53d1">, </span><span style="color: #259241">0</span><span style="color: #2e53d1">)) == -</span><span style="color: #259241">1</span><span style="color: #2e53d1">) { </span>printf<span style="color: #2e53d1">(</span><span style="color: #259241">"recv msg: %s error\n"</span><span style="color: #2e53d1">, </span>recvmsg<span style="color: #2e53d1">); </span>exit<span style="color: #2e53d1">(</span><span style="color: #259241">1</span><span style="color: #2e53d1">); } </span><span style="color: #400080">else </span><span style="color: #2e53d1">{ </span>recvmsg<span style="color: #2e53d1">[</span>recvbytes<span style="color: #2e53d1">] = </span><span style="color: #259241">'\0'</span><span style="color: #2e53d1">; </span><span style="color: #400080">if </span><span style="color: #2e53d1">(</span>strcmp<span style="color: #2e53d1">(</span>recvmsg<span style="color: #2e53d1">, </span><span style="color: #259241">"greedisgood"</span><span style="color: #2e53d1">) == </span><span style="color: #259241">0</span><span style="color: #2e53d1">) { </span>send<span style="color: #2e53d1">(</span>serverSockfd<span style="color: #2e53d1">, </span><span style="color: #259241">"greedisgood"</span><span style="color: #2e53d1">, </span><span style="color: #259241">12</span><span style="color: #2e53d1">, </span><span style="color: #259241">0</span><span style="color: #2e53d1">); </span><span style="color: #400080">break</span><span style="color: #2e53d1">; } </span>printf<span style="color: #2e53d1">(</span><span style="color: #259241">"says: %s\n"</span><span style="color: #2e53d1">, </span>recvmsg<span style="color: #2e53d1">); </span><span style="color: #400080">char </span>sendmsg<span style="color: #2e53d1">[</span><span style="color: #259241">256</span><span style="color: #2e53d1">] = {</span><span style="color: #259241">0</span><span style="color: #2e53d1">}; </span>printf<span style="color: #2e53d1">(</span><span style="color: #259241">">: "</span><span style="color: #2e53d1">); </span>gets<span style="color: #2e53d1">(</span>sendmsg<span style="color: #2e53d1">); </span><span style="color: #400080">if </span><span style="color: #2e53d1">(</span>send<span style="color: #2e53d1">(</span>serverSockfd<span style="color: #2e53d1">, </span>sendmsg<span style="color: #2e53d1">, </span><span style="color: #400080">sizeof</span><span style="color: #2e53d1">(</span>sendmsg<span style="color: #2e53d1">), </span><span style="color: #259241">0</span><span style="color: #2e53d1">) == -</span><span style="color: #259241">1</span><span style="color: #2e53d1">) { </span>printf<span style="color: #2e53d1">(</span><span style="color: #259241">"send msg: %s error\n"</span><span style="color: #2e53d1">, </span>sendmsg<span style="color: #2e53d1">); </span>exit<span style="color: #2e53d1">(</span><span style="color: #259241">1</span><span style="color: #2e53d1">); } } } </span>close<span style="color: #2e53d1">(</span>serverSockfd<span style="color: #2e53d1">); </span><span style="color: #400080">return </span><span style="color: #259241">0</span><span style="color: #2e53d1">; } </span></pre> </span><span style="color: #2e53d1">鍏朵腑says寮濮嬪嵆涓哄鏂硅鐨勮瘽錛岃?gt;:鍒欎負(fù)鑷繁鏀跺叆鐨勫唴瀹? </span></pre> <p>瀹炰緥錛?/p> <p>server绔細(xì)                                                                                                        client绔細(xì)</p> <p><a href="http://www.shnenglu.com/images/cppblog_com/izualzhy/Windows-Live-Writer/socket_EC88/image_2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.shnenglu.com/images/cppblog_com/izualzhy/Windows-Live-Writer/socket_EC88/image_thumb.png" width="463" height="236"></a>      <a href="http://www.shnenglu.com/images/cppblog_com/izualzhy/Windows-Live-Writer/socket_EC88/image_4.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.shnenglu.com/images/cppblog_com/izualzhy/Windows-Live-Writer/socket_EC88/image_thumb_1.png" width="476" height="240"></a></p><img src ="http://www.shnenglu.com/izualzhy/aggbug/186269.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/izualzhy/" target="_blank">izualzhy</a> 2012-08-04 17:15 <a href="http://www.shnenglu.com/izualzhy/archive/2012/08/04/186269.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍏充簬in_addr,inet_addr,inet_ntoa鐨勭畝鍗曚粙緇?/title><link>http://www.shnenglu.com/izualzhy/archive/2012/08/04/186250.html</link><dc:creator>izualzhy</dc:creator><author>izualzhy</author><pubDate>Sat, 04 Aug 2012 05:30:00 GMT</pubDate><guid>http://www.shnenglu.com/izualzhy/archive/2012/08/04/186250.html</guid><wfw:comment>http://www.shnenglu.com/izualzhy/comments/186250.html</wfw:comment><comments>http://www.shnenglu.com/izualzhy/archive/2012/08/04/186250.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/izualzhy/comments/commentRss/186250.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/izualzhy/services/trackbacks/186250.html</trackback:ping><description><![CDATA[<div style="padding: 0px; margin: 0px; display: inline; float: none; " id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:b5393cab-aafa-454b-95ae-5f336cb462f6" class="wlWriterEditableSmartContent">Technorati 鏍囩: <a rel="tag">socket</a></div> <p>鍦ㄨ繖閲?a href="http://www.shnenglu.com/izualzhy/archive/2012/07/28/185459.html">http://www.shnenglu.com/izualzhy/archive/2012/07/28/185459.html</a>浠嬬粛浜嗕袱涓粨鏋勪綋</p> <p>struct sockaddr涓巗truct sockaddr_in鐨勫叧緋誨拰鍖哄埆銆?/p> <p>鍏朵腑struct sockaddr_in鏈変竴涓垚鍛樹負(fù)</p> <p>struct in_addr sin_addr;//Internet鍦板潃</p> <p>鍘熸枃閲屽叧浜庤緇撴瀯浣撳仛浜嗚凍澶熺殑璇存槑錛?/p> <p>鑰宻truct in_addr鐨勫畾涔夊涓嬶紙unix錛夛細(xì)<br />typedef uint32_t in_addr_t; </p><p>struct in_addr { </p><p>in_addr_t s_addr; </p><p>}; </p><p><strong>閭d箞璇ョ粨鏋勪綋鍒板簳濡備綍浣跨敤鐨勶紵璇ュ浣曡祴鍊鹼紵</strong> </p><p>榪欓噷灝辯敤寰楀埌inet_addr()浜嗭紝璇ュ嚱鏁扮敤浜庡皢褰㈠”192.168.1.1”鐨刬p鍦板潃瀛楃涓茶漿鍖栦負(fù) </p><p>in_addr_t鐨勫艦寮?瀹為檯涓婂氨鏄痷int32_t,鍗硊nsigned long). </p><p align="left">渚嬪192瀵瑰簲鐨?6榪涘埗涓篶0,168(a8). </p><p align="left">閫嗚繃紼嬪垯鐢╥net_ntoa瀹炵幇銆?</p><p align="left">鐩存帴鐪嬩釜渚嬪瓙鍜岃繍琛岀粨鏋滐紝涓鐩簡鐒秪</p><pre class="code"><span style="color: #937a42">/* * ===================================================================================== * Filename: test.c * Description: sample of inet_ntoa,inet_addr * Created: 08/04/2012 01:23:39 PM * Author: zhy (), izualzhy@163.com * ===================================================================================== */ </span><span style="color: #400080">#include </span><span style="color: #259241"><stdio.h> </span><span style="color: #400080">#include </span><span style="color: #259241"><netinet/in.h> </span><span style="color: #400080">int </span>main<span style="color: #2e53d1">() { </span><span style="color: #400080">struct </span>in_addr addr<span style="color: #2e53d1">; </span><span style="color: #400080">char</span><span style="color: #2e53d1">* </span>straddr <span style="color: #2e53d1">= </span>malloc<span style="color: #2e53d1">(</span><span style="color: #259241">16</span><span style="color: #2e53d1">*</span><span style="color: #400080">sizeof</span><span style="color: #2e53d1">(</span><span style="color: #400080">char</span><span style="color: #2e53d1">)); </span>memset<span style="color: #2e53d1">(</span>straddr<span style="color: #2e53d1">, </span><span style="color: #259241">0</span><span style="color: #2e53d1">, </span><span style="color: #259241">16</span><span style="color: #2e53d1">); </span>addr<span style="color: #2e53d1">.</span>s_addr <span style="color: #2e53d1">= </span>inet_addr<span style="color: #2e53d1">(</span><span style="color: #259241">"192.168.1.1"</span><span style="color: #2e53d1">); </span>printf<span style="color: #2e53d1">(</span><span style="color: #259241">"%x\n"</span><span style="color: #2e53d1">,</span>addr<span style="color: #2e53d1">.</span>s_addr<span style="color: #2e53d1">); </span>printf<span style="color: #2e53d1">(</span><span style="color: #259241">"%s\n"</span><span style="color: #2e53d1">,</span>inet_ntoa<span style="color: #2e53d1">(</span>addr<span style="color: #2e53d1">)); </span>addr<span style="color: #2e53d1">.</span>s_addr <span style="color: #2e53d1">= </span>inet_addr<span style="color: #2e53d1">(</span><span style="color: #259241">"172.27.1.1"</span><span style="color: #2e53d1">); </span>printf<span style="color: #2e53d1">(</span><span style="color: #259241">"%x\n"</span><span style="color: #2e53d1">,</span>addr<span style="color: #2e53d1">.</span>s_addr<span style="color: #2e53d1">); </span>printf<span style="color: #2e53d1">(</span><span style="color: #259241">"%s\n"</span><span style="color: #2e53d1">,</span>inet_ntoa<span style="color: #2e53d1">(</span>addr<span style="color: #2e53d1">)); </span>addr<span style="color: #2e53d1">.</span>s_addr <span style="color: #2e53d1">= </span>inet_addr<span style="color: #2e53d1">(</span><span style="color: #259241">"255.255.255.255"</span><span style="color: #2e53d1">); </span>printf<span style="color: #2e53d1">(</span><span style="color: #259241">"%x, %d\n"</span><span style="color: #2e53d1">,</span>addr<span style="color: #2e53d1">.</span>s_addr<span style="color: #2e53d1">,</span>addr<span style="color: #2e53d1">.</span>s_addr<span style="color: #2e53d1">); </span>printf<span style="color: #2e53d1">(</span><span style="color: #259241">"%s\n"</span><span style="color: #2e53d1">,</span>inet_ntoa<span style="color: #2e53d1">(</span>addr<span style="color: #2e53d1">)); </span><span style="color: #400080">return </span><span style="color: #259241">0</span><span style="color: #2e53d1">; } </span></pre> <p align="left"><strong>緇撴灉錛?/strong> </p><p>y@y-VirtualBox:/mnt/Documents/Training$ ./test<br />101a8c0<br />192.168.1.1<br />1011bac<br />172.27.1.1<br />ffffffff, -1<br />255.255.255.255</p> <p align="left">鍚屾椂鍙互<font color="#ff0000">娉ㄦ剰</font>鍒幫細(xì) </p><p>inet_addr()榪斿洖鐨勫湴鍧宸茬粡鏄綉緇滃瓧鑺傛牸寮忥紝鎵浠ヤ綘鏃犻渶鍐嶈皟鐢?鍑芥暟htonl()銆?br />鎴戜滑鐜板湪鍙戠幇涓婇潰鐨勪唬鐮佺墖鏂笉鏄崄鍒嗗畬鏁寸殑錛屽洜涓哄畠娌℃湁閿欒媯鏌ャ?鏄捐屾槗瑙侊紝褰搃net_addr()鍙戠敓閿欒鏃惰繑鍥?1銆傝浣忚繖浜涗簩榪涘埗鏁板瓧錛?鏃犵 鍙鋒暟)-1浠呬粎鍜孖P鍦板潃255.255.255.255鐩哥鍚堬紒榪欏彲鏄箍鎾湴鍧錛佸ぇ閿欑壒 閿欙紒璁頒綇瑕佸厛榪涜閿欒媯鏌ャ? </p><p align="left">鑰宨net_adder鐨刴anpage閲屼篃鎻愬埌浜嗭細(xì) </p><p>The inet_addr() function converts the Internet  host  address  cp  from<br />IPv4  numbers-and-dots notation into binary data in network byte order.<br />If the input is invalid, INADDR_NONE (usually -1) is returned.  Use  of<br />this   function   is   problematic   because  -1  is  a  valid  address<br />(255.255.255.255).   Avoid   its   use   in   favor   of   inet_aton(),<br />inet_pton(3), or getaddrinfo(3) which provide a cleaner way to indicate<br />error return.<br /><br />ps:<br />鎴戣繖閲屾瘮杈冨ソ濂囩殑鏄紝inet_ntoa榪斿洖涓涓猚har*鑰屽閮ㄥ彲浠ョ洿鎺ヤ嬌鐢ㄥ張涓嶉渶瑕乫ree錛屾槸濡備綍鍋氬埌鐨?</p><img src ="http://www.shnenglu.com/izualzhy/aggbug/186250.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/izualzhy/" target="_blank">izualzhy</a> 2012-08-04 13:30 <a href="http://www.shnenglu.com/izualzhy/archive/2012/08/04/186250.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>socket甯哥敤鐨剆truct sockaddr涓巗truct sockaddr_inhttp://www.shnenglu.com/izualzhy/archive/2012/07/28/185459.htmlizualzhyizualzhySat, 28 Jul 2012 08:27:00 GMThttp://www.shnenglu.com/izualzhy/archive/2012/07/28/185459.htmlhttp://www.shnenglu.com/izualzhy/comments/185459.htmlhttp://www.shnenglu.com/izualzhy/archive/2012/07/28/185459.html#Feedback0http://www.shnenglu.com/izualzhy/comments/commentRss/185459.htmlhttp://www.shnenglu.com/izualzhy/services/trackbacks/185459.htmlTechnorati 鏍囩:

鍦ㄥ墠闈㈢殑socket浠嬬粛閲岀粡甯稿嚭鐜頒袱縐嶇粨鏋勪綋錛?/p>

struct sockaddr;

struct sockaddr_in;

鍦?lt;sys/socket.h>閲屽畾涔夛細(xì)

struct sockaddr {
銆銆 unsigned short sa_family; /* 鍦板潃瀹舵棌, AF_xxx */
銆銆 char sa_data[14]; /*14瀛楄妭鍗忚鍦板潃*/
銆銆 }; 

涓轟簡澶勭悊struct sockaddr錛岀▼搴忓憳鍒涢犱簡涓涓茍鍒楃殑緇撴瀯錛?struct sockaddr_in ("in" 浠h〃 "Internet"銆?

鍦?lt;netinte/in.h>閲屽畾涔夛細(xì)
struct sockaddr_in {
銆銆 short int sin_family; /* 閫氫俊綾誨瀷 */
銆銆 unsigned short int sin_port; /* 绔彛 */
銆銆 struct in_addr sin_addr; /* Internet 鍦板潃 */
銆銆 unsigned char sin_zero[8]; /* 涓巗ockaddr緇撴瀯鐨勯暱搴︾浉鍚?/
銆銆 };

鐢ㄨ繖涓粨鏋勫彲浠ユ洿杞繪澗鐨勫鐞嗗鎺ュ瓧鍦板潃鐨勫熀鏈厓绱犮?/p>

sin_zero鐨勫姞鍏ヤ嬌寰楄繖涓や釜緇撴瀯浣搒ize鐩稿悓錛?6錛夛紝搴旇浣跨敤鍑芥暟bzero(),memset()緗負(fù)0.

鑰宻truct in_addr鐨勫畾涔夊涓嬶紙unix錛夛細(xì)
typedef uint32_t in_addr_t;

struct in_addr {

in_addr_t s_addr;

};

鎸囧悜sockaddr_in 鐨勬寚閽堝拰鎸囧悜sockaddr鐨勬寚閽堝彲浠ョ浉浜掕漿鎹紝榪欐剰鍛崇潃濡傛灉涓涓嚱鏁版墍闇鍙傛暟綾誨瀷鏄痵ockaddr鏃訛紝浣犲彲浠ュ湪鍑芥暟璋冪敤鐨勬椂鍊欏皢涓涓寚鍚?sockaddr_in鐨勬寚閽堣漿鎹負(fù)鎸囧悜sockaddr鐨勬寚閽堬紱鎴栬呯浉鍙嶃?/p>

浣跨敤bind鍑芥暟鏃訛紝鍙互鐢ㄤ笅闈㈢殑璧嬪煎疄鐜拌嚜鍔ㄨ幏寰楁湰鏈篒P鍦板潃鍜岄殢鏈鴻幏鍙栦竴涓病鏈夎鍗犵敤鐨勭鍙e彿錛?br>銆銆 my_addr.sin_port = 0; /* 緋葷粺闅忔満閫夋嫨涓涓湭琚嬌鐢ㄧ殑绔彛鍙?*/
銆銆 my_addr.sin_addr.s_addr = INADDR_ANY; /* 濉叆鏈満IP鍦板潃 */
閫氳繃灝唌y_addr.sin_port緗負(fù)0錛屽嚱鏁頒細(xì)鑷姩涓轟綘閫夋嫨涓涓湭鍗犵敤鐨勭鍙f潵浣跨敤銆傚悓鏍鳳紝閫氳繃灝唌y_addr.sin_addr.s_addr緗負(fù)INADDR_ANY錛岀郴緇熶細(xì)鑷姩濉叆鏈満IP鍦板潃銆?br>娉ㄦ剰鍦ㄤ嬌鐢╞ind鍑芥暟鏄渶瑕佸皢sin_port鍜宻in_addr杞崲鎴愪負(fù)緗戠粶瀛楄妭浼樺厛欏哄簭錛涜宻in_addr鍒欎笉闇瑕佽漿鎹€?br>銆銆璁$畻鏈烘暟鎹瓨鍌ㄦ湁涓ょ瀛楄妭浼樺厛欏哄簭錛氶珮浣嶅瓧鑺備紭鍏堝拰浣庝綅瀛楄妭浼樺厛銆侷nternet涓婃暟鎹互楂樹綅瀛楄妭浼樺厛欏哄簭鍦ㄧ綉緇滀笂浼犺緭錛屾墍浠ュ浜庡湪鍐呴儴鏄互浣庝綅瀛楄妭浼樺厛鏂瑰紡瀛樺偍鏁版嵁鐨勬満鍣紝鍦↖nternet涓婁紶杈撴暟鎹椂灝遍渶瑕佽繘琛岃漿鎹紝鍚﹀垯灝變細(xì)鍑虹幇鏁版嵁涓嶄竴鑷淬?br>銆銆 涓嬮潰鏄嚑涓瓧鑺傞『搴忚漿鎹㈠嚱鏁幫細(xì)
路htonl()錛氭妸32浣嶅間粠涓繪満瀛楄妭搴忚漿鎹㈡垚緗戠粶瀛楄妭搴?br>路htons()錛氭妸16浣嶅間粠涓繪満瀛楄妭搴忚漿鎹㈡垚緗戠粶瀛楄妭搴?br>路ntohl()錛氭妸32浣嶅間粠緗戠粶瀛楄妭搴忚漿鎹㈡垚涓繪満瀛楄妭搴?br>路ntohs()錛氭妸16浣嶅間粠緗戠粶瀛楄妭搴忚漿鎹㈡垚涓繪満瀛楄妭搴?/p>

izualzhy 2012-07-28 16:27 鍙戣〃璇勮
]]>
socket鎺ュ彛綆浠?/title><link>http://www.shnenglu.com/izualzhy/archive/2012/07/28/185454.html</link><dc:creator>izualzhy</dc:creator><author>izualzhy</author><pubDate>Sat, 28 Jul 2012 07:52:00 GMT</pubDate><guid>http://www.shnenglu.com/izualzhy/archive/2012/07/28/185454.html</guid><wfw:comment>http://www.shnenglu.com/izualzhy/comments/185454.html</wfw:comment><comments>http://www.shnenglu.com/izualzhy/archive/2012/07/28/185454.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/izualzhy/comments/commentRss/185454.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/izualzhy/services/trackbacks/185454.html</trackback:ping><description><![CDATA[<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:bc5139ba-1c56-4c2d-913c-5bc8865389d9" class="wlWriterEditableSmartContent">Technorati 鏍囩: <a rel="tag">socket</a></div> <p><font color="#ff0000" size="3"><strong>1</strong></font><font color="#ff0000" size="3"><strong>.SOCKET寤虹珛</strong></font></p> <p><font color="#0000ff" size="3">鍘熷瀷錛?/font></p> <p><font size="3">int socket(int domain, int type, int protocol)</font></p> <p><font color="#0000ff" size="3">鍙傛暟錛?/font></p> <p><font size="3">domain:鎵浣跨敤鐨勫崗璁棌錛岄氬父涓篈F_INET<br>type:socket綾誨瀷錛孲OCK_STREAM,SOCK_DGRAM,socket榪樺畾涔変簡鍘熷鐨凷ocket(SOCK_RAW)</font></p> <p><font size="3">protocol:閫氬父涓?</font></p> <p><font color="#0000ff" size="3">瑙i噴錛?/font></p> <p><font size="3">Socket()璋冪敤榪斿洖涓涓暣鍨媠ocket鎻忚堪絎︼紝浣犲彲浠ュ湪鍚庨潰鐨勮皟鐢ㄤ嬌鐢ㄥ畠銆?br>Socket鎻忚堪絎︽槸涓涓寚鍚戝唴閮ㄦ暟鎹粨鏋勭殑鎸囬拡錛屽畠鎸囧悜鎻忚堪絎﹁〃鍏ュ彛銆傝皟鐢⊿ocket鍑芥暟鏃訛紝socket鎵ц浣撳皢寤虹珛涓涓猄ocket錛屽疄闄呬笂"寤虹珛涓涓猄ocket"鎰忓懗鐫涓轟竴涓猄ocket鏁版嵁緇撴瀯鍒嗛厤瀛樺偍絀洪棿銆係ocket鎵ц浣撲負(fù)浣犵鐞嗘弿榪扮琛ㄣ?br>涓や釜緗戠粶紼嬪簭涔嬮棿鐨勪竴涓綉緇滆繛鎺ュ寘鎷簲縐嶄俊鎭細(xì)閫氫俊鍗忚銆佹湰鍦板崗璁湴鍧銆佹湰鍦頒富鏈虹鍙c佽繙绔富鏈哄湴鍧鍜岃繙绔崗璁鍙c係ocket鏁版嵁緇撴瀯涓寘鍚繖浜旂淇℃伅銆?/font></p> <p><font color="#ff0000" size="3"><strong>2.SOCKET閰嶇疆</strong></font></p> <p><font color="#0000ff" size="3">鍘熷瀷錛?/font></p> <p><font size="3">int bind(int sockfd, struct sockaddr* my_addr, int addrlen);</font></p> <p><font color="#0000ff" size="3">鍙傛暟錛?/font></p> <p><font size="3">sockfd:璋冪敤socket()榪斿洖鐨剆ocket鎻忚堪絎?/font></p> <p><font size="3">my_addr:鍙兂鍖呭惈鏈夋湰鍦癐P鍦板潃鍙?qiáng)绔彛鍙方{変俊鎭殑sockaddr綾誨瀷鐨勬寚閽堬紱</font></p> <p><font size="3">addrlen:閫氬父璁劇疆涓簊izeof(struct sockaddr)</font></p> <p><font color="#0000ff" size="3">瑙i噴錛?/font></p> <p><font size="3">閫氳繃socket璋冪敤榪斿洖涓涓猻ocket鎻忚堪絎﹀悗錛屽湪浣跨敤socket榪涜緗戠粶浼犺緭浠ュ墠錛屽繀欏婚厤緗socket銆傞潰鍚戣繛鎺ョ殑socket瀹㈡埛绔氳繃 璋冪敤Connect鍑芥暟鍦╯ocket鏁版嵁緇撴瀯涓繚瀛樻湰鍦板拰榪滅淇℃伅銆傛棤榪炴帴socket鐨勫鎴風(fēng)鍜屾湇鍔$浠ュ強(qiáng)闈㈠悜榪炴帴socket鐨勬湇鍔$閫氳繃璋冪敤 bind鍑芥暟鏉ラ厤緗湰鍦頒俊鎭?br>Bind鍑芥暟灝唖ocket涓庢湰鏈轟笂鐨勪竴涓鍙g浉鍏寵仈錛岄殢鍚庝綘灝卞彲浠ュ湪璇ョ鍙g洃鍚湇鍔¤姹傘?/font> <p><font size="3">Bind()鍑芥暟鍦ㄦ垚鍔熻璋冪敤鏃惰繑鍥?錛涘嚭鐜伴敊璇椂榪斿洖"-1"騫跺皢errno緗負(fù)鐩稿簲鐨勯敊璇彿銆傞渶瑕佹敞鎰忕殑鏄紝鍦ㄨ皟鐢╞ind鍑芥暟鏃朵竴鑸笉瑕佸皢绔彛鍙風(fēng)疆涓哄皬浜?024鐨勫鹼紝鍥犱負(fù)1鍒?024鏄繚鐣欑鍙e彿錛屼綘鍙互閫夋嫨澶т簬1024涓殑浠諱綍涓涓病鏈夎鍗犵敤鐨勭鍙e彿銆?/font> <p><font color="#ff0000" size="3"><strong>3.寤虹珛榪炴帴</strong></font></p> <p><font color="#0000ff" size="3">鍘熷瀷錛?/font></p> <p><font size="3">int connect(int sockfd, struct sockaddr *serv_addr, int addrlen);</font></p> <p><font color="#0000ff" size="3">鍙傛暟錛?/font></p> <p><font size="3">sockfd:璋冪敤socket()榪斿洖鐨剆ocket鎻忚堪絎?/font></p> <p><font size="3">serv_addr:鍖呭惈榪滅涓繪満IP鍦板潃鍜岀鍙e彿鐨勬寚閽?/font></p> <p><font size="3">addrlen:榪滅鍦板潃緇撴瀯鐨勯暱搴?/font></p> <p><font color="#0000ff" size="3">瑙i噴錛?/font></p> <p><font size="3">Connect鍑芥暟鍦ㄥ嚭鐜伴敊璇椂榪斿洖-1錛屽茍涓旇緗甧rrno涓虹浉搴旂殑閿欒鐮併傝繘琛屽鎴風(fēng)紼嬪簭璁捐鏃犻』璋冪敤bind()錛屽洜涓鴻繖縐嶆儏鍐典笅鍙渶鐭ラ亾鐩殑鏈哄櫒 鐨処P鍦板潃錛岃屽鎴烽氳繃鍝釜绔彛涓庢湇鍔″櫒寤虹珛榪炴帴騫朵笉闇瑕佸叧蹇冿紝socket鎵ц浣撲負(fù)浣犵殑紼嬪簭鑷姩閫夋嫨涓涓湭琚崰鐢ㄧ殑绔彛錛屽茍閫氱煡浣犵殑紼嬪簭鏁版嵁浠涔堟椂鍊欏埌 鎵撴柇鍙c?br>Connect鍑芥暟鍚姩鍜岃繙绔富鏈虹殑鐩存帴榪炴帴銆傚彧鏈夐潰鍚戣繛鎺ョ殑瀹㈡埛紼嬪簭浣跨敤socket鏃舵墠闇瑕佸皢姝ocket涓庤繙绔富鏈虹浉榪炪傛棤榪炴帴鍗忚浠庝笉寤虹珛鐩存帴榪炴帴銆傞潰鍚戣繛鎺ョ殑鏈嶅姟鍣ㄤ篃浠庝笉鍚姩涓涓繛鎺ワ紝瀹冨彧鏄鍔ㄧ殑鍦ㄥ崗璁鍙g洃鍚鎴風(fēng)殑璇鋒眰銆?/font> <p><font color="#ff0000" size="3"><strong>4.鐩戝惉妯″紡</strong></font></p> <p><font color="#0000ff" size="3">鍘熷瀷錛?/font></p> <p><font size="3">int listen(int sockfd, int backlog);</font></p> <p><font color="#0000ff" size="3">鍙傛暟錛?/font></p> <p><font size="3">sockfd錛?socket鍑芥暟璋冪敤榪斿洖鐨剆ocket鎻忚堪絎︼紱</font></p> <p><font size="3">backlog錛?鍦ㄨ姹傞槦鍒椾腑鍏佽鐨勬渶澶ц姹傛暟錛岃繘鍏ョ殑榪炴帴璇鋒眰灝嗗湪闃熷垪涓瓑寰卆ccept()瀹冧滑銆侭acklog瀵歸槦鍒椾腑絳夊緟 鏈嶅姟鐨勮姹傜殑鏁扮洰榪涜浜嗛檺鍒訛紝澶у鏁扮郴緇熺己鐪佸間負(fù)20銆傚鏋滀竴涓湇鍔¤姹傚埌鏉ユ椂錛岃緭鍏ラ槦鍒楀凡婊★紝璇ocket灝嗘嫆緇濊繛鎺ヨ姹傦紝瀹㈡埛灝嗘敹鍒頒竴涓嚭閿欎俊鎭?/font></p> <p><font color="#0000ff" size="3">瑙i噴錛?/font></p> <p><font size="3">Listen鍑芥暟浣縮ocket澶勪簬琚姩鐨勭洃鍚ā寮忥紝騫朵負(fù)璇ocket寤虹珛涓涓緭鍏ユ暟鎹槦鍒楋紝灝嗗埌杈劇殑鏈嶅姟璇鋒眰淇濆瓨鍦ㄦ闃熷垪涓紝鐩村埌紼嬪簭澶勭悊瀹冧滑銆?/font></p> <p><font size="3">褰撳嚭鐜伴敊璇椂listen鍑芥暟榪斿洖-1錛屽茍緗浉搴旂殑errno閿欒鐮併?/font></p> <p><font color="#ff0000" size="3"><strong>5.鎺ユ敹榪炴帴璇鋒眰</strong></font></p> <p><font color="#0000ff" size="3">鍘熷瀷錛?/font></p> <p><font size="3">int accept(int sockfd, void *addr, int *addrlen);</font></p> <p><font color="#0000ff" size="3">鍙傛暟錛?/font></p> <p><font size="3">sockfd錛?琚洃鍚殑socket鎻忚堪絎?/font></p> <p><font size="3">addr錛?閫氬父鏄竴涓寚鍚憇ockaddr_in鐨勬寚閽堬紝鏀瑰彉閲忕敤鏉ュ瓨鏀炬彁鍑鴻繛鎺ヨ姹傛湇鍔$殑涓繪満鐨勪俊鎭紙鏌愬彴涓繪満浠庢煇涓鍙e彂鍑鴻璇鋒眰錛?/font></p> <p><font size="3">addrlen錛?閫氬父涓簊izeof(struct sockaddr_in)</font></p> <p><font color="#0000ff" size="3">瑙i噴錛?/font></p> <p><font size="3">accept()鍑芥暟璁╂湇鍔″櫒鎺ユ敹瀹㈡埛鐨勮繛鎺ヨ姹傘傚湪寤虹珛濂借緭鍏ラ槦鍒楀悗錛屾湇鍔″櫒灝辮皟鐢╝ccept鍑芥暟錛岀劧鍚庣潯鐪犲茍絳夊緟瀹㈡埛鐨勮繛鎺ヨ姹傘?/font></p> <p><font size="3">鍑虹幇閿欒鏃禷ccept鍑芥暟榪斿洖-1騫剁疆鐩稿簲鐨別rrno鍊箋?/font></p> <p><font size="3">棣栧厛錛屽綋accept鍑芥暟鐩戣鐨?socket鏀跺埌榪炴帴璇鋒眰鏃訛紝socket鎵ц浣撳皢寤虹珛涓涓柊鐨剆ocket錛屾墽琛屼綋灝嗚繖涓柊socket鍜岃姹傝繛鎺ヨ繘紼嬬殑鍦板潃鑱旂郴璧鋒潵錛屾敹鍒版湇鍔¤姹傜殑 鍒濆socket浠嶅彲浠ョ戶緇湪浠ュ墠鐨?socket涓婄洃鍚紝鍚屾椂鍙互鍦ㄦ柊鐨剆ocket鎻忚堪絎︿笂榪涜鏁版嵁浼犺緭鎿嶄綔銆?/font></p> <p><font color="#ff0000" size="3"><strong>6.鏁版嵁浼犺緭</strong></font></p> <p><font size="3">Send()鍜宺ecv()榪欎袱涓嚱鏁扮敤浜庨潰鍚戣繛鎺ョ殑socket涓婅繘琛屾暟鎹紶杈撱?/font></p> <p><font color="#0000ff" size="3">鍘熷瀷錛?/font></p> <p><font size="3">int send(int sockfd, const void* msg, int len, unsigned int flags);</font></p> <p><font color="#0000ff" size="3">鍙傛暟錛?/font></p> <p><font size="3">sockfd:鐢ㄦ潵浼犺緭鏁版嵁鐨剆ocket鎻忚堪絎?/font></p> <p><font size="3">msg錛氭寚鍚戣鍙戦佹暟鎹殑鎸囬拡</font></p> <p><font size="3">len錛氫互瀛楄妭涓哄崟浣嶇殑鏁版嵁鐨勯暱搴?/font></p> <p><font size="3">flags錛氫竴鑸儏鍐典笅緗負(fù)0</font></p> <p><font color="#0000ff" size="3">瑙i噴錛?/font></p> <p><font size="3">Send()鍑芥暟榪斿洖瀹為檯涓婂彂閫佸嚭鐨勫瓧鑺傛暟錛屽彲鑳戒細(xì)灝戜簬浣犲笇鏈涘彂閫佺殑鏁版嵁銆傚湪紼嬪簭涓簲璇ュ皢send()鐨勮繑鍥炲間笌嬈插彂閫佺殑瀛楄妭鏁拌繘琛屾瘮杈冦?/font></p> <p><font color="#0000ff" size="3">鍘熷瀷錛?/font></p> <p><font size="3">int recv(int sockfd, void* buf, int len, unsigned int flags);</font></p> <p><font color="#0000ff" size="3">鍙傛暟錛?/font></p> <p><font size="3">sockfd:鎺ュ彈鏁版嵁鐨剆ocket鎻忚堪絎?/font></p> <p><font size="3">buf:瀛樻斁鎺ュ彈鏁版嵁鐨勭紦鍐插尯</font></p> <p><font size="3">len錛氱紦鍐茬殑闀垮害</font></p> <p><font size="3">flags錛氶氬父緗負(fù)0</font></p> <p><font color="#0000ff" size="3">瑙i噴錛?/font></p> <p><font size="3">Recv()榪斿洖瀹為檯涓婃帴鏀剁殑瀛楄妭鏁幫紝褰撳嚭鐜伴敊璇椂錛岃繑鍥?1騫剁疆鐩稿簲鐨別rrno鍊箋?/font></p> <p><font size="3">Sendto()鍜宺ecvfrom()鐢ㄤ簬鍦ㄦ棤榪炴帴鐨勬暟鎹姤socket鏂瑰紡涓嬭繘琛屾暟鎹紶杈撱傜敱浜庢湰鍦皊ocket騫舵病鏈変笌榪滅鏈哄櫒寤虹珛榪炴帴錛屾墍浠ュ湪鍙戦佹暟鎹椂搴旀寚鏄庣洰鐨勫湴鍧銆?/font></p> <p><font color="#0000ff" size="3">鍘熷瀷錛?/font></p> <p><font size="3">int sendto(int sockfd, const void* msg, int len, unsigned int flags, const struct sockaddr* to, int tolen);</font></p> <p><font size="3">姣攕endto澶氫簡涓や釜鍙傛暟錛?/font></p> <p><font size="3">to:鐩殑鏈虹殑IP鍦板潃鍜岀鍙e彿淇℃伅</font></p> <p><font size="3">tolen錛氶氬父涓簊izeof(struct sockaddr)</font></p> <p><font color="#0000ff" size="3">瑙i噴錛?/font></p> <p><font size="3">Sendto 鍑芥暟涔熻繑鍥炲疄闄呭彂閫佺殑鏁版嵁瀛楄妭闀垮害鎴栧湪鍑虹幇鍙戦侀敊璇椂榪斿洖-1銆?/font></p> <p><font size="3">鍘熷瀷錛?/font></p> <p><font size="3">int recvfrom(int sockfd, void *buf, int len, unsigned int flags, struct sockaddr* from, int *fromlen);</font></p> <p><font color="#0000ff" size="3">鍙傛暟錛?/font></p> <p><font size="3">from:淇濆瓨婧愭満鐨処P鍦板潃浠ュ強(qiáng)绔彛鍙?/font></p> <p><font size="3">fromlen:閫氬父涓簊izeof(struct sockaddr)錛屽綋recvfrom()榪斿洖鏃訛紝fromlen鍖呭惈瀹為檯瀛樺叆from涓殑鏁版嵁瀛楄妭鏁般?/font></p> <p><font color="#0000ff" size="3">瑙i噴錛?/font></p> <p><font size="3">Recvfrom()鍑芥暟榪斿洖鎺ユ敹鍒扮殑瀛楄妭鏁版垨 褰撳嚭鐜伴敊璇椂榪斿洖-1錛屽茍緗浉搴旂殑errno銆?/font></p> <p><font size="3"></font> </p> <p><font size="3">濡傛灉浣犲鏁版嵁鎶ocket璋冪敤浜哻onnect()鍑芥暟鏃訛紝浣犱篃鍙互鍒╃敤send()鍜宺ecv()榪涜鏁版嵁浼犺緭錛屼絾璇ocket浠嶇劧鏄暟鎹姤socket錛屽茍涓斿埄鐢ㄤ紶杈撳眰鐨刄DP鏈嶅姟銆備絾鍦ㄥ彂閫佹垨鎺ユ敹鏁版嵁鎶ユ椂錛屽唴鏍鎬細(xì)鑷姩涓轟箣鍔犱笂鐩湴鍜屾簮鍦板潃淇℃伅銆?/font></p> <p><font color="#ff0000" size="3"><strong>7.緇撴潫浼犺緭</strong></font></p> <p><font color="#0000ff" size="3">鍘熷瀷錛?/font></p> <p><font size="3">close(sockfd);</font></p> <p><font color="#0000ff" size="3">瑙i噴錛?/font></p> <p><font size="3">褰撴墍鏈夌殑鏁版嵁鎿嶄綔緇撴潫浠ュ悗錛屼綘鍙互璋冪敤close()鍑芥暟鏉ラ噴鏀捐socket錛屼粠鑰屽仠姝㈠湪璇ocket涓婄殑浠諱綍鏁版嵁鎿嶄綔銆?/font></p> <p><font size="3">int shutdown(int sockfd, int how);</font></p> <p><font color="#0000ff" size="3">瑙i噴錛?/font></p> <p><font size="3">浣犱篃鍙互璋冪敤shutdown()鍑芥暟鏉ュ叧闂socket銆傝鍑芥暟鍏佽浣犲彧鍋滄鍦ㄦ煇涓柟鍚戜笂鐨勬暟鎹紶杈擄紝鑰屼竴涓柟鍚戜笂鐨勬暟鎹紶杈撶戶緇繘琛屻傚浣犲彲浠ュ叧闂煇socket鐨勫啓鎿嶄綔鑰屽厑璁哥戶緇湪璇ocket涓婃帴鍙楁暟鎹紝鐩磋嚦璇誨叆鎵鏈夋暟鎹?br>Sockfd鏄渶瑕佸叧闂殑socket鐨勬弿榪扮銆傚弬鏁?how鍏佽涓簊hutdown鎿嶄綔閫夋嫨浠ヤ笅鍑犵鏂瑰紡錛?br>銆銆 路0-------涓嶅厑璁哥戶緇帴鏀舵暟鎹?br>銆銆 路1-------涓嶅厑璁哥戶緇彂閫佹暟鎹?br>銆銆 路2-------涓嶅厑璁哥戶緇彂閫佸拰鎺ユ敹鏁版嵁錛?br>銆銆 路鍧囦負(fù)鍏佽鍒欒皟鐢╟lose ()<br>shutdown鍦ㄦ搷浣滄垚鍔熸椂榪斿洖0錛屽湪鍑虹幇閿欒鏃惰繑鍥?1騫剁疆鐩稿簲errno銆?/font> <p><font size="3"></font> </p> <p><font size="3">鎺ヤ笅鏉ョ湅榪欓噷錛屾槸涓嶆槸灝卞ソ鐞嗚В澶氫簡錛?/font></p> <p><a href="http://www.shnenglu.com/izualzhy/archive/2012/07/28/185451.html">http://www.shnenglu.com/izualzhy/archive/2012/07/28/185451.html</a></p> <p><font size="3">鍙傝冿細(xì)</font></p> <p><a ><font size="3">http://www.kuqin.com/networkprog/20080512/8361.html</font></a></p> <p><font size="3"></font> </p> <p><font size="3"></font> </p> <p><font size="3"></font> </p> <p><font size="3"></font></p><img src ="http://www.shnenglu.com/izualzhy/aggbug/185454.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/izualzhy/" target="_blank">izualzhy</a> 2012-07-28 15:52 <a href="http://www.shnenglu.com/izualzhy/archive/2012/07/28/185454.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>socket瀛︿範(fàn)絎旇涓涔嬪疄渚嬪叆闂?/title><link>http://www.shnenglu.com/izualzhy/archive/2012/07/28/185451.html</link><dc:creator>izualzhy</dc:creator><author>izualzhy</author><pubDate>Sat, 28 Jul 2012 06:17:00 GMT</pubDate><guid>http://www.shnenglu.com/izualzhy/archive/2012/07/28/185451.html</guid><wfw:comment>http://www.shnenglu.com/izualzhy/comments/185451.html</wfw:comment><comments>http://www.shnenglu.com/izualzhy/archive/2012/07/28/185451.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/izualzhy/comments/commentRss/185451.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/izualzhy/services/trackbacks/185451.html</trackback:ping><description><![CDATA[<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:b96e47d4-d079-473b-9bfa-304e959a8cef" class="wlWriterEditableSmartContent">Technorati 鏍囩: <a rel="tag">socket</a></div> <p>涓嶇煡閬撲負(fù)浠涔堬紝浠庣綉涓婃悳鍒扮殑鍏充簬socket鐨勬枃绔犻兘鏃犱竴渚嬪鐨勬彁鍒皊ocket緙栫▼寰堢畝鍗曪紝濡傛灉浣犱簡瑙d簡浠ュ悗銆傘傘?/p> <p>鎴戝湪瀛︿範(fàn)涓彂鐜板茍涓嶆槸榪欎箞綆鍗曠殑錛屼竴姝ヤ竴姝ュ涔?fàn)浜嗗懙鍛点傚厛鏀句釜嫻佺▼錛屼互鍙?qiáng)渚嬪瓙锛?xì)</p> <p><img src="http://www.kuqin.com/networkprog/images/socket3.jpg"></p> <p>浠g爜鍩烘湰鎸夌収榪欎釜嫻佺▼鏉ョ殑錛屼粈涔坰ocket錛宐ind錛孉F_INET澶ф鐞嗚В鐨勫氨鍏堢悊瑙g潃錛屼笉鐞嗚В涔熸病闂銆傛垜鐨勭悊瑙f槸榪欏彧鏄啺灞變竴瑙掞紝鏈塖OCKET_STREAM,榪樻湁SOCKET_DGRAM鍛紝涓鐐圭偣瀛︿範(fàn)鐞嗚В涓庣Н绱惂銆?br>鎴戠浉淇$瓑璁頒笂鍑犵瘒絎旇鍚庯紝鏁翠釜浠g爜鍦ㄥ共浠涔堜細(xì)寰堝鏄撶悊瑙g殑浜嗐?/p> <p>鑰屽ぇ閮ㄥ垎浜鴻鐨剆ocket緙栫▼瀹規(guī)槗搴旇鏄祦紼嬫瘮杈冩竻鏅幫紝涓嶈繃鍏朵腑鐨勫嚱鏁版帴鍙o紝綾誨瀷絳夌瓑錛岃繕鏄渶瑕佷粩緇嗙悽紓ㄧ殑銆?/p> <p>搴熻瘽涓嶅璁蹭簡錛岃創(chuàng)涓緥瀛愶紝榪愯涓嬫墠濂姐?/p> <p>寮涓や釜緇堢錛屼竴涓繍琛宻erver錛屼竴涓猚lient鍗沖彲銆?/p> <p>鑷充簬client鐨勫弬鏁幫紝涓嶅Θ鑷繁鑰冭檻涓嬶紝姣曠珶瀛︿範(fàn)鐨勮繃紼嬭偗瀹氳鑰楄垂鑴戠粏鑳?yōu)鐨刕_^</p> <p>鏈嶅姟鍣細(xì)</p><pre class="code"><span style="color: #937a42">/* * ===================================================================================== * Filename: svr.c * Description: socket server * * Version: 1.0 * Created: 07/28/2012 12:46:39 PM * * Author: zhy (), izualzhy@163.com * ===================================================================================== */ </span><span style="color: #400080">#include </span><span style="color: #259241"><stdio.h> </span><span style="color: #400080">#include </span><span style="color: #259241"><stdlib.h> </span><span style="color: #400080">#include </span><span style="color: #259241"><errno.h> </span><span style="color: #400080">#include </span><span style="color: #259241"><string.h> </span><span style="color: #400080">#include </span><span style="color: #259241"><sys/types.h> </span><span style="color: #400080">#include </span><span style="color: #259241"><netinet/in.h> </span><span style="color: #400080">#include </span><span style="color: #259241"><sys/socket.h> </span><span style="color: #400080">#include </span><span style="color: #259241"><sys/wait.h> </span><span style="color: #400080">#define </span>SERVPORT <span style="color: #259241">3333 </span><span style="color: #400080">#define </span>BACKLOG <span style="color: #259241">10 </span><span style="color: #400080">int </span>main<span style="color: #2e53d1">() { </span><span style="color: #400080">int </span>sockfd<span style="color: #2e53d1">, </span>client_fd<span style="color: #2e53d1">;</span><span style="color: #937a42">//sockfd:鐩戝惉socket錛宑hient_fd:鏁版嵁浼犺緭socket </span><span style="color: #400080">struct </span>sockaddr_in my_addr<span style="color: #2e53d1">;</span><span style="color: #937a42">//鏈湴鍦板潃淇℃伅 </span><span style="color: #400080">struct </span>sockaddr_in remote_addr<span style="color: #2e53d1">; </span>printf<span style="color: #2e53d1">(</span><span style="color: #259241">"sockaddr: %d, sockaddr_in: %d\n"</span><span style="color: #2e53d1">,</span><span style="color: #400080">sizeof</span><span style="color: #2e53d1">(</span><span style="color: #400080">struct </span>sockaddr<span style="color: #2e53d1">), </span><span style="color: #400080">sizeof</span><span style="color: #2e53d1">(</span><span style="color: #400080">struct </span>sockaddr_in<span style="color: #2e53d1">)); </span><span style="color: #400080">if </span><span style="color: #2e53d1">((</span>sockfd <span style="color: #2e53d1">= </span>socket<span style="color: #2e53d1">(</span>AF_INET<span style="color: #2e53d1">, </span>SOCK_STREAM<span style="color: #2e53d1">, </span><span style="color: #259241">0</span><span style="color: #2e53d1">)) == -</span><span style="color: #259241">1</span><span style="color: #2e53d1">) { </span>perror<span style="color: #2e53d1">(</span><span style="color: #259241">"socket create error!"</span><span style="color: #2e53d1">); </span>exit<span style="color: #2e53d1">(</span><span style="color: #259241">1</span><span style="color: #2e53d1">); } </span>my_addr<span style="color: #2e53d1">.</span>sin_family <span style="color: #2e53d1">= </span>AF_INET<span style="color: #2e53d1">; </span>my_addr<span style="color: #2e53d1">.</span>sin_port <span style="color: #2e53d1">= </span>htons<span style="color: #2e53d1">(</span>SERVPORT<span style="color: #2e53d1">); </span>my_addr<span style="color: #2e53d1">.</span>sin_addr<span style="color: #2e53d1">.</span>s_addr <span style="color: #2e53d1">= </span>INADDR_ANY<span style="color: #2e53d1">; </span>bzero<span style="color: #2e53d1">(&</span>my_addr<span style="color: #2e53d1">.</span>sin_zero<span style="color: #2e53d1">, </span><span style="color: #259241">8</span><span style="color: #2e53d1">); </span><span style="color: #400080">if </span><span style="color: #2e53d1">(</span>bind<span style="color: #2e53d1">(</span>sockfd<span style="color: #2e53d1">, (</span><span style="color: #400080">struct </span>sockaddr<span style="color: #2e53d1">*)&</span>my_addr<span style="color: #2e53d1">, </span><span style="color: #400080">sizeof</span><span style="color: #2e53d1">(</span><span style="color: #400080">struct </span>sockaddr<span style="color: #2e53d1">)) == -</span><span style="color: #259241">1</span><span style="color: #2e53d1">) { </span>perror<span style="color: #2e53d1">(</span><span style="color: #259241">"bind error!"</span><span style="color: #2e53d1">); </span>exit<span style="color: #2e53d1">(</span><span style="color: #259241">1</span><span style="color: #2e53d1">); } </span><span style="color: #400080">if </span><span style="color: #2e53d1">(</span>listen<span style="color: #2e53d1">(</span>sockfd<span style="color: #2e53d1">, </span>BACKLOG<span style="color: #2e53d1">) == -</span><span style="color: #259241">1</span><span style="color: #2e53d1">) { </span>perror<span style="color: #2e53d1">(</span><span style="color: #259241">"listen error!"</span><span style="color: #2e53d1">); </span>exit<span style="color: #2e53d1">(</span><span style="color: #259241">1</span><span style="color: #2e53d1">); } </span><span style="color: #400080">while </span><span style="color: #2e53d1">(</span><span style="color: #259241">1</span><span style="color: #2e53d1">) { </span><span style="color: #400080">unsigned int </span>sin_size <span style="color: #2e53d1">= </span><span style="color: #400080">sizeof</span><span style="color: #2e53d1">(</span><span style="color: #400080">struct </span>sockaddr_in<span style="color: #2e53d1">); </span><span style="color: #400080">if </span><span style="color: #2e53d1">((</span>client_fd <span style="color: #2e53d1">= </span>accept<span style="color: #2e53d1">(</span>sockfd<span style="color: #2e53d1">, (</span><span style="color: #400080">struct </span>sockaddr<span style="color: #2e53d1">*)&</span>remote_addr<span style="color: #2e53d1">, &</span>sin_size<span style="color: #2e53d1">)) == -</span><span style="color: #259241">1</span><span style="color: #2e53d1">) { </span>perror<span style="color: #2e53d1">(</span><span style="color: #259241">"accept erro!"</span><span style="color: #2e53d1">); </span><span style="color: #400080">continue</span><span style="color: #2e53d1">; } </span>printf<span style="color: #2e53d1">(</span><span style="color: #259241">"received a connection from %s\n"</span><span style="color: #2e53d1">, </span>inet_ntoa<span style="color: #2e53d1">(</span>remote_addr<span style="color: #2e53d1">.</span>sin_addr<span style="color: #2e53d1">)); </span><span style="color: #400080">if </span><span style="color: #2e53d1">(!</span>fork<span style="color: #2e53d1">()) { </span><span style="color: #400080">if </span><span style="color: #2e53d1">(</span>send<span style="color: #2e53d1">(</span>client_fd<span style="color: #2e53d1">, </span><span style="color: #259241">"Hello, you are connected!"</span><span style="color: #2e53d1">, </span><span style="color: #259241">26</span><span style="color: #2e53d1">, </span><span style="color: #259241">0</span><span style="color: #2e53d1">) == -</span><span style="color: #259241">1</span><span style="color: #2e53d1">) { </span>perror<span style="color: #2e53d1">(</span><span style="color: #259241">"send error!"</span><span style="color: #2e53d1">); </span>close<span style="color: #2e53d1">(</span>client_fd<span style="color: #2e53d1">); </span>exit<span style="color: #2e53d1">(</span><span style="color: #259241">0</span><span style="color: #2e53d1">); } } </span>close<span style="color: #2e53d1">(</span>client_fd<span style="color: #2e53d1">); } </span><span style="color: #400080">return </span><span style="color: #259241">0</span><span style="color: #2e53d1">; } </span></pre> <p>瀹㈡埛绔細(xì)</p><pre class="code"><span style="color: #937a42">/* * ===================================================================================== * Filename: clnt.c * Description: socket client * * Version: 1.0 * Created: 07/28/2012 01:00:46 PM * * Author: zhy (), izualzhy@163.com * ===================================================================================== */ </span><span style="color: #400080">#include </span><span style="color: #259241"><stdio.h> </span><span style="color: #400080">#include </span><span style="color: #259241"><stdlib.h> </span><span style="color: #400080">#include </span><span style="color: #259241"><errno.h> </span><span style="color: #400080">#include </span><span style="color: #259241"><string.h> </span><span style="color: #400080">#include </span><span style="color: #259241"><netdb.h> </span><span style="color: #400080">#include </span><span style="color: #259241"><sys/types.h> </span><span style="color: #400080">#include </span><span style="color: #259241"><netinet/in.h> </span><span style="color: #400080">#include </span><span style="color: #259241"><sys/socket.h> </span><span style="color: #400080">#define </span>SERVPORT <span style="color: #259241">3333 </span><span style="color: #400080">#define </span>MAXDATASIZE <span style="color: #259241">100</span><span style="color: #937a42">//姣忔鏈澶ф暟鎹紶杈撻噺 </span><span style="color: #400080">int </span>main<span style="color: #2e53d1">(</span><span style="color: #400080">int </span>argc<span style="color: #2e53d1">, </span><span style="color: #400080">char</span><span style="color: #2e53d1">* </span>argv<span style="color: #2e53d1">[]) { </span><span style="color: #400080">int </span>sockfd<span style="color: #2e53d1">, </span>recvbytes<span style="color: #2e53d1">; </span><span style="color: #400080">char </span>buf<span style="color: #2e53d1">[</span>MAXDATASIZE<span style="color: #2e53d1">]; </span><span style="color: #400080">struct </span>hostent<span style="color: #2e53d1">* </span>host<span style="color: #2e53d1">; </span><span style="color: #400080">struct </span>sockaddr_in serv_addr<span style="color: #2e53d1">; </span><span style="color: #400080">if </span><span style="color: #2e53d1">(</span>argc <span style="color: #2e53d1">< </span><span style="color: #259241">2</span><span style="color: #2e53d1">) { </span>fprintf<span style="color: #2e53d1">(</span>stderr<span style="color: #2e53d1">, </span><span style="color: #259241">"Please enter the server's hostname"</span><span style="color: #2e53d1">); </span>exit<span style="color: #2e53d1">(</span><span style="color: #259241">1</span><span style="color: #2e53d1">); } </span><span style="color: #400080">if </span><span style="color: #2e53d1">((</span>host <span style="color: #2e53d1">= </span>gethostbyname<span style="color: #2e53d1">(</span>argv<span style="color: #2e53d1">[</span><span style="color: #259241">1</span><span style="color: #2e53d1">])) == </span>NULL<span style="color: #2e53d1">) { </span>perror<span style="color: #2e53d1">(</span><span style="color: #259241">"gethostbyname error!"</span><span style="color: #2e53d1">); </span>exit<span style="color: #2e53d1">(</span><span style="color: #259241">1</span><span style="color: #2e53d1">); } </span><span style="color: #400080">if </span><span style="color: #2e53d1">((</span>sockfd <span style="color: #2e53d1">= </span>socket<span style="color: #2e53d1">(</span>AF_INET<span style="color: #2e53d1">, </span>SOCK_STREAM<span style="color: #2e53d1">, </span><span style="color: #259241">0</span><span style="color: #2e53d1">)) == -</span><span style="color: #259241">1</span><span style="color: #2e53d1">) { </span>perror<span style="color: #2e53d1">(</span><span style="color: #259241">"socket create error!"</span><span style="color: #2e53d1">); </span>exit<span style="color: #2e53d1">(</span><span style="color: #259241">1</span><span style="color: #2e53d1">); } </span>serv_addr<span style="color: #2e53d1">.</span>sin_family <span style="color: #2e53d1">= </span>AF_INET<span style="color: #2e53d1">; </span>serv_addr<span style="color: #2e53d1">.</span>sin_port <span style="color: #2e53d1">= </span>htons<span style="color: #2e53d1">(</span>SERVPORT<span style="color: #2e53d1">); </span>serv_addr<span style="color: #2e53d1">.</span>sin_addr <span style="color: #2e53d1">= *((</span><span style="color: #400080">struct </span>in_addr <span style="color: #2e53d1">*)</span>host<span style="color: #2e53d1">-></span>h_addr<span style="color: #2e53d1">); </span>bzero<span style="color: #2e53d1">(&(</span>serv_addr<span style="color: #2e53d1">.</span>sin_zero<span style="color: #2e53d1">), </span><span style="color: #259241">8</span><span style="color: #2e53d1">); </span><span style="color: #400080">if </span><span style="color: #2e53d1">(</span>connect<span style="color: #2e53d1">(</span>sockfd<span style="color: #2e53d1">, (</span><span style="color: #400080">struct </span>sockaddr<span style="color: #2e53d1">*)&</span>serv_addr<span style="color: #2e53d1">, </span><span style="color: #400080">sizeof</span><span style="color: #2e53d1">(</span><span style="color: #400080">struct </span>sockaddr<span style="color: #2e53d1">)) == -</span><span style="color: #259241">1</span><span style="color: #2e53d1">) { </span>perror<span style="color: #2e53d1">(</span><span style="color: #259241">"connect error!"</span><span style="color: #2e53d1">); </span>exit<span style="color: #2e53d1">(</span><span style="color: #259241">1</span><span style="color: #2e53d1">); } </span><span style="color: #400080">if </span><span style="color: #2e53d1">((</span>recvbytes <span style="color: #2e53d1">= </span>recv<span style="color: #2e53d1">(</span>sockfd<span style="color: #2e53d1">, </span>buf<span style="color: #2e53d1">, </span>MAXDATASIZE<span style="color: #2e53d1">, </span><span style="color: #259241">0</span><span style="color: #2e53d1">)) == -</span><span style="color: #259241">1</span><span style="color: #2e53d1">) { </span>perror<span style="color: #2e53d1">(</span><span style="color: #259241">"recv error!"</span><span style="color: #2e53d1">); </span>exit<span style="color: #2e53d1">(</span><span style="color: #259241">1</span><span style="color: #2e53d1">); } </span>buf<span style="color: #2e53d1">[</span>recvbytes<span style="color: #2e53d1">] = </span><span style="color: #259241">'\0'</span><span style="color: #2e53d1">; </span>printf<span style="color: #2e53d1">(</span><span style="color: #259241">"Received: %s\n"</span><span style="color: #2e53d1">, </span>buf<span style="color: #2e53d1">); </span>close<span style="color: #2e53d1">(</span>sockfd<span style="color: #2e53d1">); </span><span style="color: #400080">return </span><span style="color: #259241">0</span><span style="color: #2e53d1">; } </span></pre> <p>鍙傝冿細(xì)</p> <p><a >http://www.kuqin.com/networkprog/20080512/8361.html</a></p><img src ="http://www.shnenglu.com/izualzhy/aggbug/185451.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/izualzhy/" target="_blank">izualzhy</a> 2012-07-28 14:17 <a href="http://www.shnenglu.com/izualzhy/archive/2012/07/28/185451.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.aimingshi.cn" target="_blank">精品乱码久久久久久久</a>| <a href="http://www.xileshun.cn" target="_blank">久久精品亚洲AV久久久无码</a>| <a href="http://www.expo2006sy.com.cn" target="_blank">香蕉久久夜色精品国产2020 </a>| <a href="http://www.kpqo.cn" target="_blank">久久精品这里只有精99品</a>| <a href="http://www.lftdly.cn" target="_blank">精品国产乱码久久久久久郑州公司 </a>| <a href="http://www.hqbtt.cn" target="_blank">99久久超碰中文字幕伊人</a>| <a href="http://www.madgou.cn" target="_blank">久久精品一本到99热免费</a>| <a href="http://www.323r.cn" target="_blank">久久久国产精品亚洲一区</a>| <a href="http://www.uhpd.cn" target="_blank">久久午夜伦鲁片免费无码</a>| <a href="http://www.njyy888.com.cn" target="_blank">久久夜色精品国产网站</a>| <a href="http://www.schzjy.cn" target="_blank">av午夜福利一片免费看久久</a>| <a href="http://www.bjxcst.cn" target="_blank">97久久天天综合色天天综合色hd </a>| <a href="http://www.nuzc.cn" target="_blank">久久综合日本熟妇</a>| <a href="http://www.zhxyzb.cn" target="_blank">一本大道久久东京热无码AV </a>| <a href="http://www.wxyuyang.com.cn" target="_blank">国产精品一区二区久久</a>| <a href="http://www.bettertrade.cn" target="_blank">久久综合欧美成人</a>| <a href="http://www.xiaoshuocn.cn" target="_blank">久久精品国产一区二区电影</a>| <a href="http://www.gkwtw.cn" target="_blank">午夜福利91久久福利</a>| <a href="http://www.90key.cn" target="_blank">欧美精品乱码99久久蜜桃</a>| <a href="http://www.k8movie.cn" target="_blank">久久人人妻人人爽人人爽</a>| <a href="http://www.ysaoyx.cn" target="_blank">国产一区二区三区久久</a>| <a href="http://www.masradio.com.cn" target="_blank">久久精品国产亚洲5555</a>| <a href="http://www.zfhotel.cn" target="_blank">久久国内免费视频</a>| <a href="http://www.ywxcj.cn" target="_blank">久久国产一区二区</a>| <a href="http://www.cpp521.cn" target="_blank">欧美伊人久久大香线蕉综合69</a>| <a href="http://www.s9375.cn" target="_blank">国产A级毛片久久久精品毛片</a>| <a href="http://www.73sd.cn" target="_blank">久久精品国产精品亚洲毛片</a>| <a href="http://www.sxzt888.cn" target="_blank">久久不见久久见免费影院www日本</a>| <a href="http://www.asyb.com.cn" target="_blank">区亚洲欧美一级久久精品亚洲精品成人网久久久久 </a>| <a href="http://www.scmyff.cn" target="_blank">久久伊人中文无码</a>| <a href="http://www.ggg13.cn" target="_blank">久久久久久亚洲精品成人</a>| <a href="http://www.tvjay.cn" target="_blank">国产福利电影一区二区三区,免费久久久久久久精 </a>| <a href="http://www.zjfinancial.cn" target="_blank">久久精品国产精品青草</a>| <a href="http://www.hedaji.cn" target="_blank">色妞色综合久久夜夜</a>| <a href="http://www.1yaofang.cn" target="_blank">久久被窝电影亚洲爽爽爽</a>| <a href="http://www.fsxslvs.cn" target="_blank">精品久久久久久无码不卡</a>| <a href="http://www.chiom.cn" target="_blank">久久国产亚洲精品麻豆</a>| <a href="http://www.oulihong.cn" target="_blank">99久久无色码中文字幕人妻</a>| <a href="http://www.w9839.cn" target="_blank">久久99国产一区二区三区</a>| <a href="http://www.gcctv.cn" target="_blank">久久精品国产网红主播</a>| <a href="http://www.tjjobs.com.cn" target="_blank">久久国产亚洲精品</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>