{"id":171,"date":"2017-02-17T20:21:23","date_gmt":"2017-02-17T12:21:23","guid":{"rendered":"http:\/\/www.lnzdl.com\/blog\/?p=171"},"modified":"2017-02-17T20:21:23","modified_gmt":"2017-02-17T12:21:23","slug":"c%e8%af%ad%e8%a8%80socket%e9%80%9a%e8%ae%af%e5%ad%a6%e4%b9%a0","status":"publish","type":"post","link":"http:\/\/www.lnzdl.com\/blog\/c%e8%af%ad%e8%a8%80socket%e9%80%9a%e8%ae%af%e5%ad%a6%e4%b9%a0\/","title":{"rendered":"C\u8bed\u8a00SOCKET\u901a\u8baf\u5b66\u4e60"},"content":{"rendered":"<blockquote>\n<div class=\"line number1 index0 alt2\"><code class=\"cpp plain\">\u3010\u670d\u52a1\u5668\u7aef\u3011<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"cpp preprocessor\">#include\u00a0\"stdafx.h\"<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"cpp preprocessor\">#include\u00a0&lt;stdio.h&gt;<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"cpp preprocessor\">#include\u00a0&lt;winsock2.h&gt;<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"cpp preprocessor\">#include\u00a0&lt;winsock2.h&gt;<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"cpp preprocessor\">#define\u00a0SERVER_PORT\u00a05208\u00a0\/\/\u4fa6\u542c\u7aef\u53e3<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"cpp keyword bold\">void<\/code>\u00a0<code class=\"cpp plain\">main()<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"cpp plain\">{<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp color1 bold\">WORD<\/code>\u00a0<code class=\"cpp plain\">wVersionRequested;<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">WSADATA\u00a0wsaData;<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp color1 bold\">int<\/code>\u00a0<code class=\"cpp plain\">ret,\u00a0nLeft,\u00a0length;<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">SOCKET\u00a0sListen,\u00a0sServer;\u00a0<\/code><code class=\"cpp comments\">\/\/\u4fa6\u542c\u5957\u63a5\u5b57\uff0c\u8fde\u63a5\u5957\u63a5\u5b57<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp keyword bold\">struct<\/code>\u00a0<code class=\"cpp plain\">sockaddr_in\u00a0saServer,\u00a0saClient;\u00a0<\/code><code class=\"cpp comments\">\/\/\u5730\u5740\u4fe1\u606f\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp color1 bold\">char<\/code>\u00a0<code class=\"cpp plain\">*ptr;<\/code><code class=\"cpp comments\">\/\/\u7528\u4e8e\u904d\u5386\u4fe1\u606f\u7684\u6307\u9488\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp comments\">\/\/WinSock\u521d\u59cb\u5316<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">wVersionRequested=MAKEWORD(2,\u00a02);\u00a0<\/code><code class=\"cpp comments\">\/\/\u5e0c\u671b\u4f7f\u7528\u7684WinSock\u00a0DLL\u00a0\u7684\u7248\u672c<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">ret=WSAStartup(wVersionRequested,\u00a0&amp;wsaData);<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp keyword bold\">if<\/code><code class=\"cpp plain\">(ret!=0)<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">{<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp functions bold\">printf<\/code><code class=\"cpp plain\">(<\/code><code class=\"cpp string\">\"WSAStartup()\u00a0failed!\\n\"<\/code><code class=\"cpp plain\">);<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp keyword bold\">return<\/code><code class=\"cpp plain\">;<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">}<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp comments\">\/\/\u521b\u5efaSocket,\u4f7f\u7528TCP\u534f\u8bae<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">sListen=socket(AF_INET,\u00a0SOCK_STREAM,\u00a0IPPROTO_TCP);<\/code><\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp keyword bold\">if<\/code>\u00a0<code class=\"cpp plain\">(sListen\u00a0==\u00a0INVALID_SOCKET)<\/code><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">{<\/code><\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">WSACleanup();<\/code><\/div>\n<div class=\"line number28 index27 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp functions bold\">printf<\/code><code class=\"cpp plain\">(<\/code><code class=\"cpp string\">\"socket()\u00a0faild!\\n\"<\/code><code class=\"cpp plain\">);<\/code><\/div>\n<div class=\"line number29 index28 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp keyword bold\">return<\/code><code class=\"cpp plain\">;<\/code><\/div>\n<div class=\"line number30 index29 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">}<\/code><\/div>\n<div class=\"line number31 index30 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp comments\">\/\/\u6784\u5efa\u672c\u5730\u5730\u5740\u4fe1\u606f<\/code><\/div>\n<div class=\"line number32 index31 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">saServer.sin_family\u00a0=\u00a0AF_INET;\u00a0<\/code><code class=\"cpp comments\">\/\/\u5730\u5740\u5bb6\u65cf<\/code><\/div>\n<div class=\"line number33 index32 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">saServer.sin_port\u00a0=\u00a0htons(SERVER_PORT);\u00a0<\/code><code class=\"cpp comments\">\/\/\u6ce8\u610f\u8f6c\u5316\u4e3a\u7f51\u7edc\u5b57\u8282\u5e8f<\/code><\/div>\n<div class=\"line number34 index33 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">saServer.sin_addr.S_un.S_addr\u00a0=\u00a0htonl(INADDR_ANY);\u00a0<\/code><code class=\"cpp comments\">\/\/\u4f7f\u7528INADDR_ANY\u00a0\u6307\u793a\u4efb\u610f\u5730\u5740<\/code><\/div>\n<div class=\"line number35 index34 alt2\"><code class=\"cpp spaces\">\u00a0<\/code><\/div>\n<div class=\"line number36 index35 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp comments\">\/\/\u7ed1\u5b9a<\/code><\/div>\n<div class=\"line number37 index36 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">ret\u00a0=\u00a0bind(sListen,\u00a0(<\/code><code class=\"cpp keyword bold\">struct<\/code>\u00a0<code class=\"cpp plain\">sockaddr\u00a0*)&amp;saServer,\u00a0<\/code><code class=\"cpp keyword bold\">sizeof<\/code><code class=\"cpp plain\">(saServer));<\/code><\/div>\n<div class=\"line number38 index37 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp keyword bold\">if<\/code>\u00a0<code class=\"cpp plain\">(ret\u00a0==\u00a0SOCKET_ERROR)<\/code><\/div>\n<div class=\"line number39 index38 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">{<\/code><\/div>\n<div class=\"line number40 index39 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp functions bold\">printf<\/code><code class=\"cpp plain\">(<\/code><code class=\"cpp string\">\"bind()\u00a0faild!\u00a0code:%d\\n\"<\/code><code class=\"cpp plain\">,\u00a0WSAGetLastError());<\/code><\/div>\n<div class=\"line number41 index40 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">closesocket(sListen);\u00a0<\/code><code class=\"cpp comments\">\/\/\u5173\u95ed\u5957\u63a5\u5b57<\/code><\/div>\n<div class=\"line number42 index41 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">WSACleanup();<\/code><\/div>\n<div class=\"line number43 index42 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp keyword bold\">return<\/code><code class=\"cpp plain\">;<\/code><\/div>\n<div class=\"line number44 index43 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">}<\/code><\/div>\n<div class=\"line number45 index44 alt2\"><code class=\"cpp spaces\">\u00a0<\/code><\/div>\n<div class=\"line number46 index45 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp comments\">\/\/\u4fa6\u542c\u8fde\u63a5\u8bf7\u6c42<\/code><\/div>\n<div class=\"line number47 index46 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">ret\u00a0=\u00a0listen(sListen,\u00a05);<\/code><\/div>\n<div class=\"line number48 index47 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp keyword bold\">if<\/code>\u00a0<code class=\"cpp plain\">(ret\u00a0==\u00a0SOCKET_ERROR)<\/code><\/div>\n<div class=\"line number49 index48 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">{<\/code><\/div>\n<div class=\"line number50 index49 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp functions bold\">printf<\/code><code class=\"cpp plain\">(<\/code><code class=\"cpp string\">\"listen()\u00a0faild!\u00a0code:%d\\n\"<\/code><code class=\"cpp plain\">,\u00a0WSAGetLastError());<\/code><\/div>\n<div class=\"line number51 index50 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">closesocket(sListen);\u00a0<\/code><code class=\"cpp comments\">\/\/\u5173\u95ed\u5957\u63a5\u5b57<\/code><\/div>\n<div class=\"line number52 index51 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp keyword bold\">return<\/code><code class=\"cpp plain\">;<\/code><\/div>\n<div class=\"line number53 index52 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">}<\/code><\/div>\n<div class=\"line number54 index53 alt1\"><code class=\"cpp spaces\">\u00a0<\/code><\/div>\n<div class=\"line number55 index54 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp functions bold\">printf<\/code><code class=\"cpp plain\">(<\/code><code class=\"cpp string\">\"Waiting\u00a0for\u00a0client\u00a0connecting!\\n\"<\/code><code class=\"cpp plain\">);<\/code><\/div>\n<div class=\"line number56 index55 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp functions bold\">printf<\/code><code class=\"cpp plain\">(<\/code><code class=\"cpp string\">\"Tips:\u00a0Ctrl+c\u00a0to\u00a0quit!\\n\"<\/code><code class=\"cpp plain\">);<\/code><\/div>\n<div class=\"line number57 index56 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp comments\">\/\/\u963b\u585e\u7b49\u5f85\u63a5\u53d7\u5ba2\u6237\u7aef\u8fde\u63a5<\/code><\/div>\n<div class=\"line number58 index57 alt1\"><code class=\"cpp spaces\">\u00a0<\/code><code class=\"cpp keyword bold\">while<\/code><code class=\"cpp plain\">(1)<\/code><code class=\"cpp comments\">\/\/\u5faa\u73af\u76d1\u542c\u5ba2\u6237\u7aef\uff0c\u6c38\u8fdc\u4e0d\u505c\u6b62\uff0c\u6240\u4ee5\uff0c\u5728\u672c\u9879\u76ee\u4e2d\uff0c\u6211\u4eec\u6ca1\u6709\u5fc3\u8df3\u5305\u3002<\/code><\/div>\n<div class=\"line number59 index58 alt2\"><code class=\"cpp spaces\">\u00a0<\/code><code class=\"cpp plain\">{<\/code><\/div>\n<div class=\"line number60 index59 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0<\/code><code class=\"cpp plain\">length\u00a0=\u00a0<\/code><code class=\"cpp keyword bold\">sizeof<\/code><code class=\"cpp plain\">(saClient);<\/code><\/div>\n<div class=\"line number61 index60 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0<\/code><code class=\"cpp plain\">sServer\u00a0=\u00a0accept(sListen,\u00a0(<\/code><code class=\"cpp keyword bold\">struct<\/code>\u00a0<code class=\"cpp plain\">sockaddr\u00a0*)&amp;saClient,\u00a0&amp;length);<\/code><\/div>\n<div class=\"line number62 index61 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0<\/code><code class=\"cpp keyword bold\">if<\/code>\u00a0<code class=\"cpp plain\">(sServer\u00a0==\u00a0INVALID_SOCKET)<\/code><\/div>\n<div class=\"line number63 index62 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0<\/code><code class=\"cpp plain\">{<\/code><\/div>\n<div class=\"line number64 index63 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp functions bold\">printf<\/code><code class=\"cpp plain\">(<\/code><code class=\"cpp string\">\"accept()\u00a0faild!\u00a0code:%d\\n\"<\/code><code class=\"cpp plain\">,\u00a0WSAGetLastError());<\/code><\/div>\n<div class=\"line number65 index64 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">closesocket(sListen);\u00a0<\/code><code class=\"cpp comments\">\/\/\u5173\u95ed\u5957\u63a5\u5b57<\/code><\/div>\n<div class=\"line number66 index65 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">WSACleanup();<\/code><\/div>\n<div class=\"line number67 index66 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp keyword bold\">return<\/code><code class=\"cpp plain\">;<\/code><\/div>\n<div class=\"line number68 index67 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0<\/code><code class=\"cpp plain\">}\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number69 index68 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0<\/code><code class=\"cpp color1 bold\">char<\/code>\u00a0<code class=\"cpp plain\">receiveMessage[5000];<\/code><\/div>\n<div class=\"line number70 index69 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">nLeft\u00a0=\u00a0<\/code><code class=\"cpp keyword bold\">sizeof<\/code><code class=\"cpp plain\">(receiveMessage);<\/code><\/div>\n<div class=\"line number71 index70 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0<\/code><code class=\"cpp plain\">ptr\u00a0=\u00a0(<\/code><code class=\"cpp color1 bold\">char<\/code>\u00a0<code class=\"cpp plain\">*)&amp;receiveMessage;<\/code><\/div>\n<div class=\"line number72 index71 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0<\/code><code class=\"cpp keyword bold\">while<\/code><code class=\"cpp plain\">(nLeft&gt;0)<\/code><\/div>\n<div class=\"line number73 index72 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0<\/code><code class=\"cpp plain\">{<\/code><\/div>\n<div class=\"line number74 index73 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp comments\">\/\/\u63a5\u6536\u6570\u636e<\/code><\/div>\n<div class=\"line number75 index74 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">ret\u00a0=\u00a0recv(sServer,\u00a0ptr,\u00a05000,\u00a00);<\/code><\/div>\n<div class=\"line number76 index75 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp keyword bold\">if<\/code>\u00a0<code class=\"cpp plain\">(ret\u00a0==\u00a0SOCKET_ERROR)<\/code><\/div>\n<div class=\"line number77 index76 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">{<\/code><\/div>\n<div class=\"line number78 index77 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp functions bold\">printf<\/code><code class=\"cpp plain\">(<\/code><code class=\"cpp string\">\"recv()\u00a0failed!\\n\"<\/code><code class=\"cpp plain\">);<\/code><\/div>\n<div class=\"line number79 index78 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp keyword bold\">return<\/code><code class=\"cpp plain\">;<\/code><\/div>\n<div class=\"line number80 index79 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">}<\/code><\/div>\n<div class=\"line number81 index80 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp keyword bold\">if<\/code>\u00a0<code class=\"cpp plain\">(ret\u00a0==\u00a00)\u00a0<\/code><code class=\"cpp comments\">\/\/\u5ba2\u6237\u7aef\u5df2\u7ecf\u5173\u95ed\u8fde\u63a5<\/code><\/div>\n<div class=\"line number82 index81 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">{<\/code><\/div>\n<div class=\"line number83 index82 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp functions bold\">printf<\/code><code class=\"cpp plain\">(<\/code><code class=\"cpp string\">\"Client\u00a0has\u00a0closed\u00a0the\u00a0connection\\n\"<\/code><code class=\"cpp plain\">);<\/code><\/div>\n<div class=\"line number84 index83 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp keyword bold\">break<\/code><code class=\"cpp plain\">;<\/code><\/div>\n<div class=\"line number85 index84 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">}<\/code><\/div>\n<div class=\"line number86 index85 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">nLeft\u00a0-=\u00a0ret;<\/code><\/div>\n<div class=\"line number87 index86 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">ptr\u00a0+=\u00a0ret;<\/code><\/div>\n<div class=\"line number88 index87 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0<\/code><code class=\"cpp plain\">}\u00a0\u00a0<\/code><\/div>\n<div class=\"line number89 index88 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp functions bold\">printf<\/code><code class=\"cpp plain\">(<\/code><code class=\"cpp string\">\"receive\u00a0message:%s\\n\"<\/code><code class=\"cpp plain\">,\u00a0receiveMessage);<\/code><code class=\"cpp comments\">\/\/\u6253\u5370\u6211\u4eec\u63a5\u6536\u5230\u7684\u6d88\u606f\u3002<\/code><\/div>\n<div class=\"line number90 index89 alt1\"><code class=\"cpp spaces\">\u00a0<\/code><\/div>\n<div class=\"line number91 index90 alt2\"><code class=\"cpp spaces\">\u00a0<\/code><code class=\"cpp plain\">}<\/code><\/div>\n<div class=\"line number92 index91 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0<\/code><code class=\"cpp comments\">\/\/\u00a0\u00a0closesocket(sListen);<\/code><\/div>\n<div class=\"line number93 index92 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0<\/code><code class=\"cpp comments\">\/\/\u00a0\u00a0closesocket(sServer);<\/code><\/div>\n<div class=\"line number94 index93 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0<\/code><code class=\"cpp comments\">\/\/\u00a0\u00a0WSACleanup();<\/code><\/div>\n<div class=\"line number95 index94 alt2\"><code class=\"cpp plain\">}<\/code><\/div>\n<div class=\"line number96 index95 alt1\"><code class=\"cpp plain\">\u3010\u5ba2\u6237\u7aef\u3011<\/code><\/div>\n<div class=\"line number97 index96 alt2\"><code class=\"cpp preprocessor\">#include\u00a0\"stdafx.h\"<\/code><\/div>\n<div class=\"line number98 index97 alt1\"><code class=\"cpp preprocessor\">#include\u00a0&lt;stdio.h&gt;<\/code><\/div>\n<div class=\"line number99 index98 alt2\"><code class=\"cpp preprocessor\">#include\u00a0&lt;stdlib.h&gt;<\/code><\/div>\n<div class=\"line number100 index99 alt1\"><code class=\"cpp preprocessor\">#include\u00a0&lt;winsock2.h&gt;<\/code><\/div>\n<div class=\"line number101 index100 alt2\"><code class=\"cpp preprocessor\">#define\u00a0SERVER_PORT\u00a05208\u00a0\/\/\u4fa6\u542c\u7aef\u53e3<\/code><\/div>\n<div class=\"line number102 index101 alt1\"><code class=\"cpp keyword bold\">void<\/code>\u00a0<code class=\"cpp plain\">main()<\/code><\/div>\n<div class=\"line number103 index102 alt2\"><code class=\"cpp plain\">{<\/code><\/div>\n<div class=\"line number104 index103 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp color1 bold\">WORD<\/code>\u00a0<code class=\"cpp plain\">wVersionRequested;<\/code><\/div>\n<div class=\"line number105 index104 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">WSADATA\u00a0wsaData;<\/code><\/div>\n<div class=\"line number106 index105 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp color1 bold\">int<\/code>\u00a0<code class=\"cpp plain\">ret;<\/code><\/div>\n<div class=\"line number107 index106 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">SOCKET\u00a0sClient;\u00a0<\/code><code class=\"cpp comments\">\/\/\u8fde\u63a5\u5957\u63a5\u5b57<\/code><\/div>\n<div class=\"line number108 index107 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp keyword bold\">struct<\/code>\u00a0<code class=\"cpp plain\">sockaddr_in\u00a0saServer;\u00a0<\/code><code class=\"cpp comments\">\/\/\u5730\u5740\u4fe1\u606f<\/code><\/div>\n<div class=\"line number109 index108 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp color1 bold\">char<\/code>\u00a0<code class=\"cpp plain\">*ptr;<\/code><\/div>\n<div class=\"line number110 index109 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp color1 bold\">BOOL<\/code>\u00a0<code class=\"cpp plain\">fSuccess\u00a0=\u00a0TRUE;<\/code><\/div>\n<div class=\"line number111 index110 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp comments\">\/\/WinSock\u521d\u59cb\u5316<\/code><\/div>\n<div class=\"line number112 index111 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">wVersionRequested\u00a0=\u00a0MAKEWORD(2,\u00a02);\u00a0<\/code><code class=\"cpp comments\">\/\/\u5e0c\u671b\u4f7f\u7528\u7684WinSock\u00a0DLL\u7684\u7248\u672c<\/code><\/div>\n<div class=\"line number113 index112 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">ret\u00a0=\u00a0WSAStartup(wVersionRequested,\u00a0&amp;wsaData);<\/code><\/div>\n<div class=\"line number114 index113 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp keyword bold\">if<\/code><code class=\"cpp plain\">(ret!=0)<\/code><\/div>\n<div class=\"line number115 index114 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">{<\/code><\/div>\n<div class=\"line number116 index115 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp functions bold\">printf<\/code><code class=\"cpp plain\">(<\/code><code class=\"cpp string\">\"WSAStartup()\u00a0failed!\\n\"<\/code><code class=\"cpp plain\">);<\/code><\/div>\n<div class=\"line number117 index116 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp keyword bold\">return<\/code><code class=\"cpp plain\">;<\/code><\/div>\n<div class=\"line number118 index117 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">}<\/code><\/div>\n<div class=\"line number119 index118 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp comments\">\/\/\u786e\u8ba4WinSock\u00a0DLL\u652f\u6301\u7248\u672c2.2<\/code><\/div>\n<div class=\"line number120 index119 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp keyword bold\">if<\/code><code class=\"cpp plain\">(LOBYTE(wsaData.wVersion)!=2\u00a0||\u00a0HIBYTE(wsaData.wVersion)!=2)<\/code><\/div>\n<div class=\"line number121 index120 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">{<\/code><\/div>\n<div class=\"line number122 index121 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">WSACleanup();<\/code><\/div>\n<div class=\"line number123 index122 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp functions bold\">printf<\/code><code class=\"cpp plain\">(<\/code><code class=\"cpp string\">\"Invalid\u00a0WinSock\u00a0version!\\n\"<\/code><code class=\"cpp plain\">);<\/code><\/div>\n<div class=\"line number124 index123 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp keyword bold\">return<\/code><code class=\"cpp plain\">;<\/code><\/div>\n<div class=\"line number125 index124 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">}<\/code><\/div>\n<div class=\"line number126 index125 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp comments\">\/\/\u521b\u5efaSocket,\u4f7f\u7528TCP\u534f\u8bae<\/code><\/div>\n<div class=\"line number127 index126 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">sClient\u00a0=\u00a0socket(AF_INET,\u00a0SOCK_STREAM,\u00a0IPPROTO_TCP);<\/code><\/div>\n<div class=\"line number128 index127 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp keyword bold\">if<\/code>\u00a0<code class=\"cpp plain\">(sClient\u00a0==\u00a0INVALID_SOCKET)<\/code><\/div>\n<div class=\"line number129 index128 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">{<\/code><\/div>\n<div class=\"line number130 index129 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">WSACleanup();<\/code><\/div>\n<div class=\"line number131 index130 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp functions bold\">printf<\/code><code class=\"cpp plain\">(<\/code><code class=\"cpp string\">\"socket()\u00a0failed!\\n\"<\/code><code class=\"cpp plain\">);<\/code><\/div>\n<div class=\"line number132 index131 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp keyword bold\">return<\/code><code class=\"cpp plain\">;<\/code><\/div>\n<div class=\"line number133 index132 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">}<\/code><\/div>\n<div class=\"line number134 index133 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp comments\">\/\/\u6784\u5efa\u670d\u52a1\u5668\u5730\u5740\u4fe1\u606f<\/code><\/div>\n<div class=\"line number135 index134 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">saServer.sin_family\u00a0=\u00a0AF_INET;\u00a0<\/code><code class=\"cpp comments\">\/\/\u5730\u5740\u5bb6\u65cf<\/code><\/div>\n<div class=\"line number136 index135 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">saServer.sin_port\u00a0=\u00a0htons(SERVER_PORT);\u00a0<\/code><code class=\"cpp comments\">\/\/\u6ce8\u610f\u8f6c\u5316\u4e3a\u7f51\u7edc\u8282\u5e8f<\/code><\/div>\n<div class=\"line number137 index136 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">saServer.sin_addr.S_un.S_addr\u00a0=\u00a0inet_addr(<\/code><code class=\"cpp string\">\"192.168.1.127\"<\/code><code class=\"cpp plain\">);<\/code><\/div>\n<div class=\"line number138 index137 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp comments\">\/\/\u8fde\u63a5\u670d\u52a1\u5668<\/code><\/div>\n<div class=\"line number139 index138 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">ret\u00a0=\u00a0connect(sClient,\u00a0(<\/code><code class=\"cpp keyword bold\">struct<\/code>\u00a0<code class=\"cpp plain\">sockaddr\u00a0*)&amp;saServer,\u00a0<\/code><code class=\"cpp keyword bold\">sizeof<\/code><code class=\"cpp plain\">(saServer));<\/code><\/div>\n<div class=\"line number140 index139 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp keyword bold\">if<\/code>\u00a0<code class=\"cpp plain\">(ret\u00a0==\u00a0SOCKET_ERROR)<\/code><\/div>\n<div class=\"line number141 index140 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">{<\/code><\/div>\n<div class=\"line number142 index141 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp functions bold\">printf<\/code><code class=\"cpp plain\">(<\/code><code class=\"cpp string\">\"connect()\u00a0failed!\\n\"<\/code><code class=\"cpp plain\">);<\/code><\/div>\n<div class=\"line number143 index142 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">closesocket(sClient);\u00a0<\/code><code class=\"cpp comments\">\/\/\u5173\u95ed\u5957\u63a5\u5b57<\/code><\/div>\n<div class=\"line number144 index143 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">WSACleanup();<\/code><\/div>\n<div class=\"line number145 index144 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp keyword bold\">return<\/code><code class=\"cpp plain\">;<\/code><\/div>\n<div class=\"line number146 index145 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">}<\/code><\/div>\n<div class=\"line number147 index146 alt2\"><code class=\"cpp spaces\">\u00a0<\/code><\/div>\n<div class=\"line number148 index147 alt1\"><code class=\"cpp spaces\">\u00a0<\/code><\/div>\n<div class=\"line number149 index148 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp color1 bold\">char<\/code>\u00a0<code class=\"cpp plain\">sendMessage[]=<\/code><code class=\"cpp string\">\"hello\u00a0this\u00a0is\u00a0client\u00a0message!\"<\/code><code class=\"cpp plain\">;<\/code><\/div>\n<div class=\"line number150 index149 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">ret\u00a0=\u00a0send\u00a0(sClient,\u00a0(<\/code><code class=\"cpp color1 bold\">char<\/code>\u00a0<code class=\"cpp plain\">*)&amp;sendMessage,\u00a0<\/code><code class=\"cpp keyword bold\">sizeof<\/code><code class=\"cpp plain\">(sendMessage),\u00a00);<\/code><\/div>\n<div class=\"line number151 index150 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp keyword bold\">if<\/code>\u00a0<code class=\"cpp plain\">(ret\u00a0==\u00a0SOCKET_ERROR)<\/code><\/div>\n<div class=\"line number152 index151 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">{<\/code><\/div>\n<div class=\"line number153 index152 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp functions bold\">printf<\/code><code class=\"cpp plain\">(<\/code><code class=\"cpp string\">\"send()\u00a0failed!\\n\"<\/code><code class=\"cpp plain\">);<\/code><\/div>\n<div class=\"line number154 index153 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">}<\/code><\/div>\n<div class=\"line number155 index154 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp keyword bold\">else<\/code><\/div>\n<div class=\"line number156 index155 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"cpp functions bold\">printf<\/code><code class=\"cpp plain\">(<\/code><code class=\"cpp string\">\"client\u00a0info\u00a0has\u00a0been\u00a0sent!\"<\/code><code class=\"cpp plain\">);<\/code><\/div>\n<div class=\"line number157 index156 alt2\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">closesocket(sClient);\u00a0<\/code><code class=\"cpp comments\">\/\/\u5173\u95ed\u5957\u63a5\u5b57<\/code><\/div>\n<div class=\"line number158 index157 alt1\"><code class=\"cpp spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"cpp plain\">WSACleanup();<\/code><\/div>\n<div class=\"line number159 index158 alt2\"><code class=\"cpp plain\">}<\/code><\/div>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>\u3010\u670d\u52a1\u5668\u7aef\u3011 #include\u00a0&#8220;stdafx.h&#8221; #include\u00a0&lt;stdio.h&gt; #include\u00a0&lt;winsock2.h&gt; #include\u00a0&lt;winsock2.h&gt; #define\u00a0SERVER_PORT\u00a05208\u00a0\/\/\u4fa6\u542c\u7aef\u53e3 void\u00a0main() { \u00a0\u00a0\u00a0\u00a0WORD\u00a0wVersionRequested; \u00a0\u00a0\u00a0\u00a0WSADATA\u00a0wsaDat [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"http:\/\/www.lnzdl.com\/blog\/wp-json\/wp\/v2\/posts\/171"}],"collection":[{"href":"http:\/\/www.lnzdl.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.lnzdl.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.lnzdl.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.lnzdl.com\/blog\/wp-json\/wp\/v2\/comments?post=171"}],"version-history":[{"count":1,"href":"http:\/\/www.lnzdl.com\/blog\/wp-json\/wp\/v2\/posts\/171\/revisions"}],"predecessor-version":[{"id":172,"href":"http:\/\/www.lnzdl.com\/blog\/wp-json\/wp\/v2\/posts\/171\/revisions\/172"}],"wp:attachment":[{"href":"http:\/\/www.lnzdl.com\/blog\/wp-json\/wp\/v2\/media?parent=171"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.lnzdl.com\/blog\/wp-json\/wp\/v2\/categories?post=171"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.lnzdl.com\/blog\/wp-json\/wp\/v2\/tags?post=171"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}