{"id":2415,"date":"2022-09-26T23:40:23","date_gmt":"2022-09-26T15:40:23","guid":{"rendered":"https:\/\/lonelinerd.com\/?p=2415"},"modified":"2022-10-16T22:08:19","modified_gmt":"2022-10-16T14:08:19","slug":"u3d-net-2","status":"publish","type":"post","link":"https:\/\/lonelinerd.com\/index.php\/2022\/09\/26\/u3d-net-2\/","title":{"rendered":"\u300aUnity3D\u7db2\u7d61\u904a\u6232\u5be6\u8e10\u300b\uff08\u7b2c2\u7248\uff09\u8981\u9ede\u6458\u9304 &#8211; \u300c\u7570\u6b65\u548c\u591a\u8def\u5fa9\u7528\u300d"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"2415\" class=\"elementor elementor-2415\">\n\t\t\t\t\t\t<div class=\"elementor-inner\">\n\t\t\t\t<div class=\"elementor-section-wrap\">\n\t\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-db77e92 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"db77e92\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-83a6b5c\" data-id=\"83a6b5c\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2eb98ea elementor-widget elementor-widget-text-editor\" data-id=\"2eb98ea\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<p><b>\u66f8\u540d\uff1a<\/b><strong>\u300aUnity3D\u7db2\u7d61\u904a\u6232\u5be6\u8e10\u300b\uff08\u7b2c2\u7248\uff09<\/strong><\/p><p><strong>\u4f5c\u8005\uff1a\u7f85\u57f9\u7fbd<\/strong><\/p><p>\u6240\u8b80\u7248\u672c\uff1a\u6a5f\u68b0\u5de5\u696d\u51fa\u7248\u793e<\/p>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-02cadfa elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"02cadfa\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5bd2aee\" data-id=\"5bd2aee\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-21862dd elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"21862dd\" data-element_type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-92eb7a4 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"92eb7a4\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-cfcc88f\" data-id=\"cfcc88f\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-277a09b elementor-widget elementor-widget-text-editor\" data-id=\"277a09b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<h4 class=\"md-end-block md-heading\"><span style=\"text-decoration: underline;\"><strong><span class=\"md-plain\">\u7570\u6b65\u5ba2\u6236\u7aef<\/span><\/strong><\/span><\/h4><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain md-expand\">\u9023\u63a5<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-variable\">IAsyncResult<\/span> <span class=\"cm-def\">BeginConnect<\/span>(<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">host<\/span>, <span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">port<\/span>, <span class=\"cm-variable\">AsyncCallback<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">requestCallback<\/span>, <span class=\"cm-variable-3\">object<\/span> <span class=\"cm-variable\">state<\/span>)<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">EndConnect<\/span>(<span class=\"cm-variable\">IAsyncResult<\/span> <span class=\"cm-variable\">asyncResult<\/span>)<\/span><\/pre><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">AsyncCallback requestCallback\uff1a\u56de\u8abf\u51fd\u6578\uff0c\u51fd\u6578\u8fd4\u56de\u503c\u5fc5\u9808\u70ba\u7a7a\uff0c\u63a5\u53d7\u4e00\u500bIAsyncResult\u985e\u578b\u7684\u53c3\u6578<\/span><\/span><\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">object state\uff1a\u8a72\u5c0d\u8c61\u6703\u56de\u50b3\u7d66\u56de\u8abf\u51fd\u6578<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u5728BeginConnect\u7684\u56de\u8abf\u51fd\u6578\u4e2d\u8abf\u7528<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">EndConnect\u53ef\u4ee5\u5b8c\u6210\u9023\u63a5<\/span><\/span><\/span><\/p><\/li><\/ul><\/li><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">Connect<\/span>()<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">socket<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">Socket<\/span>(<span class=\"cm-variable\">AddressFamily<\/span>.<span class=\"cm-variable\">InterNetwork<\/span>, <span class=\"cm-variable\">SocketType<\/span>.<span class=\"cm-variable\">Stream<\/span>, <span class=\"cm-variable\">ProtocolType<\/span>.<span class=\"cm-variable\">Tcp<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">socket<\/span>.<span class=\"cm-variable\">BeginConnect<\/span>(<span class=\"cm-string\">\"127.0.0.1\"<\/span>, <span class=\"cm-number\">8888<\/span>, <span class=\"cm-variable\">ConnectCallback<\/span>, <span class=\"cm-variable\">socket<\/span>);<\/span><br \/><span role=\"presentation\">}<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">ConnectCallback<\/span>(<span class=\"cm-variable\">IAsyncResult<\/span> <span class=\"cm-variable\">result<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">try<\/span><\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Socket<\/span> <span class=\"cm-variable\">socket<\/span> <span class=\"cm-operator\">=<\/span> (<span class=\"cm-variable\">Socket<\/span>)<span class=\"cm-variable\">result<\/span>.<span class=\"cm-variable\">AsyncState<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">socket<\/span>.<span class=\"cm-variable\">EndConnect<\/span>(<span class=\"cm-variable\">result<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">catch<\/span> (<span class=\"cm-variable\">SocketException<\/span> <span class=\"cm-variable\">ex<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Debug<\/span>.<span class=\"cm-variable\">Log<\/span>(<span class=\"cm-string\">\"Socket Connect Failed: \"<\/span> <span class=\"cm-operator\">+<\/span> <span class=\"cm-variable\">ex<\/span>.<span class=\"cm-variable\">ToString<\/span>());<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u63a5\u6536<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-variable\">IAsyncResult<\/span> <span class=\"cm-def\">BeginReceive<\/span>(<span class=\"cm-variable-3\">byte<\/span>[] <span class=\"cm-variable\">buffer<\/span>, <span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">offset<\/span>, <span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">size<\/span>,          <span class=\"cm-variable\">SocketFlags<\/span> <span class=\"cm-variable\">socketFlags<\/span>, <span class=\"cm-variable\">AsyncCallback<\/span> <span class=\"cm-variable\">callback<\/span>, <span class=\"cm-variable-3\">object<\/span> <span class=\"cm-variable\">state<\/span>)<\/span><br \/><span role=\"presentation\"><span class=\"cm-variable-3\">int<\/span> <span class=\"cm-def\">EndReceive<\/span>(<span class=\"cm-variable\">IAsyncResult<\/span> <span class=\"cm-variable\">asyncResult<\/span>)<\/span><\/pre><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">byte[] readBuff\uff1a\u63a5\u6536\u7de9\u6c96\u5340<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">int offset, int size\uff1a\u5f9e\u7b2coffset\u4f4d\u958b\u59cb\u63a5\u6536\u6578\u64da\uff0c\u6700\u591a\u63a5\u6536size\u500b\u5b57\u7bc0\u7684\u6578\u64da<\/span><\/p><\/li><\/ul><\/li><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">ConnectCallback<\/span>(<span class=\"cm-variable\">IAsyncResult<\/span> <span class=\"cm-variable\">result<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">try<\/span><\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/...<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u78ba\u8a8d\u9023\u63a5\u5f8c\u958b\u59cb\u63a5\u6536\u6578\u64da<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">socket<\/span>.<span class=\"cm-variable\">BeginReceive<\/span>(<span class=\"cm-variable\">readBuff<\/span>, <span class=\"cm-number\">0<\/span>, <span class=\"cm-number\">1024<\/span>, <span class=\"cm-number\">0<\/span>, <span class=\"cm-variable\">ReceiveCallback<\/span>, <span class=\"cm-variable\">socket<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">catch<\/span>(<span class=\"cm-variable\">SocketException<\/span> <span class=\"cm-variable\">ex<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/ ... <\/span><\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">}<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">ReceiveCallback<\/span>(<span class=\"cm-variable\">IAsyncResult<\/span> <span class=\"cm-variable\">result<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">try<\/span><\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Socket<\/span> <span class=\"cm-variable\">socket<\/span> <span class=\"cm-operator\">=<\/span> (<span class=\"cm-variable\">Socket<\/span>)<span class=\"cm-variable\">result<\/span>.<span class=\"cm-variable\">AsyncState<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">count<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">socket<\/span>.<span class=\"cm-variable\">EndReceive<\/span>(<span class=\"cm-variable\">result<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">recvStr<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">System<\/span>.<span class=\"cm-variable\">Text<\/span>.<span class=\"cm-variable\">Encoding<\/span>.<span class=\"cm-variable\">UTF8<\/span>.<span class=\"cm-variable\">GetString<\/span>(<span class=\"cm-variable\">readBuff<\/span>, <span class=\"cm-number\">0<\/span>, <span class=\"cm-variable\">count<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Debug<\/span>.<span class=\"cm-variable\">Log<\/span>(<span class=\"cm-string\">\"Receive Success\"<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u7d50\u675f\u63a5\u53d7\u4e00\u6b21\u5f8c\uff0c\u518d\u958b\u59cb\u6e96\u5099\u63a5\u6536\u4e0b\u4e00\u4e32\u7684\u6578\u64da<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">socket<\/span>.<span class=\"cm-variable\">BeginReceive<\/span>(<span class=\"cm-variable\">readBuff<\/span>, <span class=\"cm-number\">0<\/span>, <span class=\"cm-number\">1024<\/span>, <span class=\"cm-number\">0<\/span>, <span class=\"cm-variable\">ReceiveCallback<\/span>, <span class=\"cm-variable\">socket<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">catch<\/span> (<span class=\"cm-variable\">SocketException<\/span> <span class=\"cm-variable\">ex<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Debug<\/span>.<span class=\"cm-variable\">Log<\/span>(<span class=\"cm-string\">\"Socket Receive Failed: \"<\/span> <span class=\"cm-operator\">+<\/span> <span class=\"cm-variable\">ex<\/span>.<span class=\"cm-variable\">ToString<\/span>());<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u767c\u9001<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">Send\u65b9\u6cd5\u662f\u4e00\u500b\u963b\u585e\u65b9\u6cd5<\/span><\/span><\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u7531\u65bcTCP\u662f\u53ef\u9760\u9023\u63a5\uff0c\u7576\u63a5\u6536\u65b9\u6c92\u6709\u6536\u5230\u6578\u64da\u6642\uff0c\u767c\u9001\u65b9\u6703\u91cd\u65b0\u767c\u9001\u6578\u64da\uff0c\u76f4\u5230\u78ba\u8a8d\u63a5\u6536\u65b9\u63a5\u6536\u5230\u6578\u64da\u70ba\u6b62<\/span><\/p><\/li><li class=\"md-list-item md-focus-container\"><p class=\"md-end-block md-p md-focus\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u5728OS\u5167\u90e8\uff0c\u6bcf\u500bSocket\u90fd\u6709\u4e00\u500b\u767c\u9001\u7de9\u6c96\u5340\uff0c\u7528\u4f86\u4fdd\u5b58\u90a3\u4e9b\u63a5\u6536\u65b9\u672a\u78ba\u8a8d\u7684\u6578\u64da<\/span><\/span><\/span><\/p><\/li><\/ul><\/li><\/ul><\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-b88a1e9 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b88a1e9\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-f45f7be\" data-id=\"f45f7be\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f98db71 elementor-widget elementor-widget-image\" data-id=\"f98db71\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-image\">\n\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"821\" height=\"491\" src=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/09\/Ch2_1.png\" class=\"attachment-large size-large wp-image-2423\" alt=\"\" srcset=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/09\/Ch2_1.png 821w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/09\/Ch2_1-300x179.png 300w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/09\/Ch2_1-768x459.png 768w\" sizes=\"auto, (max-width: 821px) 100vw, 821px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-ae372be elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"ae372be\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-92ba768\" data-id=\"92ba768\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f2fa58b elementor-widget elementor-widget-text-editor\" data-id=\"f2fa58b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<ul><li style=\"list-style-type: none;\"><ul class=\"ul-list\" data-mark=\"-\"><li style=\"list-style-type: none;\"><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item md-focus-container\"><p class=\"md-end-block md-p md-focus\"><span class=\"md-html-inline md-expand\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u8abf\u7528Send\u6642\uff0c\u7a0b\u5e8f\u5c07\u8981\u767c\u9001\u7684\u5b57\u7bc0\u5beb\u5165\u7de9\u6c96\u5340\uff0c\u518d\u7531OS\u5b8c\u6210\u6578\u64da\u7684\u767c\u9001\u548c\u78ba\u8a8d<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u7de9\u6c96\u5340\u9577\u5ea6\u70ba8KB\uff0c\u6eff\u4e86\u4e4b\u5f8cSend\u65b9\u6cd5\u5c31\u6703\u963b\u585e<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">Send\u53ea\u662f\u628a\u6578\u64da\u5beb\u5165\u767c\u9001\u7de9\u6c96\u5340\uff0c\u7531<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">OS\u8ca0\u8cac\u91cd\u50b3\uff0c\u78ba\u8a8d<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">Send\u65b9\u6cd5\u8fd4\u56de\u53ea\u4ee3\u8868\u6210\u529f\u5c07\u6578\u64da\u5beb\u5165\u7de9\u6c96\u5340<\/span><\/span><\/span><\/p><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline md-expand\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u7570\u6b65Send\uff1a\u7576\u6578\u64da\u6210\u529f\u5beb\u5165\u7de9\u6c96\u5340\u6642\u6703\u8abf\u7528\u56de\u8abf\u51fd\u6578<\/span><\/span><\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-variable\">IAsyncResult<\/span> <span class=\"cm-def\">BeginSend<\/span>(<span class=\"cm-variable-3\">byte<\/span>[] <span class=\"cm-variable\">buffer<\/span>, <span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">offset<\/span>, <span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">size<\/span>, <span class=\"cm-variable\">SocketFlags<\/span> <span class=\"cm-variable\">socketFlags<\/span>, <span class=\"cm-variable\">AsyncCallback<\/span> <span class=\"cm-variable\">callback<\/span>, <span class=\"cm-variable-3\">object<\/span> <span class=\"cm-variable\">state<\/span>)<\/span><br \/><span role=\"presentation\"><span class=\"cm-variable-3\">int<\/span> <span class=\"cm-def\">EndSend<\/span>(<span class=\"cm-variable\">IAsyncResult<\/span> <span class=\"cm-variable\">asyncResult<\/span>)<\/span><\/pre><\/li><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">Send<\/span>()<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/Send Req \u7570\u6b65<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">sendStr<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">reqField<\/span>.<span class=\"cm-variable\">text<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable-3\">byte<\/span>[] <span class=\"cm-variable\">sendBytes<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">System<\/span>.<span class=\"cm-variable\">Text<\/span>.<span class=\"cm-variable\">Encoding<\/span>.<span class=\"cm-variable\">UTF8<\/span>.<span class=\"cm-variable\">GetBytes<\/span>(<span class=\"cm-variable\">sendStr<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">socket<\/span>.<span class=\"cm-variable\">BeginSend<\/span>(<span class=\"cm-variable\">sendBytes<\/span>, <span class=\"cm-number\">0<\/span>, <span class=\"cm-variable\">sendBytes<\/span>.<span class=\"cm-variable\">Length<\/span>, <span class=\"cm-number\">0<\/span>, <span class=\"cm-variable\">SendCallback<\/span>, <span class=\"cm-variable\">socket<\/span>);<\/span><br \/><span role=\"presentation\">}<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">SendCallback<\/span>(<span class=\"cm-variable\">IAsyncResult<\/span> <span class=\"cm-variable\">result<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">try<\/span><\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Socket<\/span> <span class=\"cm-variable\">socket<\/span> <span class=\"cm-operator\">=<\/span> (<span class=\"cm-variable\">Socket<\/span>)<span class=\"cm-variable\">result<\/span>.<span class=\"cm-variable\">AsyncState<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">count<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">socket<\/span>.<span class=\"cm-variable\">EndSend<\/span>(<span class=\"cm-variable\">result<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Debug<\/span>.<span class=\"cm-variable\">Log<\/span>(<span class=\"cm-string\">\"Socket Send Success: \"<\/span> <span class=\"cm-operator\">+<\/span> <span class=\"cm-variable\">count<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">catch<\/span>(<span class=\"cm-variable\">SocketException<\/span> <span class=\"cm-variable\">ex<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Debug<\/span>.<span class=\"cm-variable\">Log<\/span>(<span class=\"cm-string\">\"Socket Send Failed: \"<\/span> <span class=\"cm-operator\">+<\/span> <span class=\"cm-variable\">ex<\/span>.<span class=\"cm-variable\">ToString<\/span>());<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><\/ul><\/li><\/ul><\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-08fadb8 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"08fadb8\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0a7735e\" data-id=\"0a7735e\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-83de270 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"83de270\" data-element_type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6a5cafc elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6a5cafc\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-042eb1d\" data-id=\"042eb1d\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-818a620 elementor-widget elementor-widget-text-editor\" data-id=\"818a620\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<h4 class=\"md-end-block md-heading md-focus\"><span style=\"text-decoration: underline;\"><strong><span class=\"md-plain md-expand\">\u7570\u6b65\u670d\u52d9\u7aef<\/span><\/strong><\/span><\/h4><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u63a5\u6536\u9023\u63a5<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-variable\">IAsyncResult<\/span> <span class=\"cm-def\">BeginAccept<\/span>(<span class=\"cm-variable\">AsyncCallback<\/span> <span class=\"cm-variable\">callback<\/span>, <span class=\"cm-variable-3\">object<\/span> <span class=\"cm-variable\">state<\/span>)<\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">Socket<\/span> <span class=\"cm-def\">EndAccept<\/span>(<span class=\"cm-variable\">IAsyncResult<\/span> <span class=\"cm-variable\">asyncResult<\/span>)<\/span><\/pre><\/li><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-keyword\">static<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">Main<\/span>(<span class=\"cm-variable-3\">string<\/span>[] <span class=\"cm-variable\">args<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/Create Socket<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">listenSocket<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">Socket<\/span>(<span class=\"cm-variable\">AddressFamily<\/span>.<span class=\"cm-variable\">InterNetwork<\/span>, <span class=\"cm-variable\">SocketType<\/span>.<span class=\"cm-variable\">Stream<\/span>, <span class=\"cm-variable\">ProtocolType<\/span>.<span class=\"cm-variable\">Tcp<\/span>);<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/Bind<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">IPAddress<\/span> <span class=\"cm-variable\">ipAdr<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">IPAddress<\/span>.<span class=\"cm-variable\">Parse<\/span>(<span class=\"cm-string\">\"192.168.1.5\"<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">IPEndPoint<\/span> <span class=\"cm-variable\">ipEp<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">IPEndPoint<\/span>(<span class=\"cm-variable\">ipAdr<\/span>, <span class=\"cm-number\">8888<\/span>); <span class=\"cm-comment\">\/\/\u7d81\u5b9aIP\u548c\u7aef\u53e3<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">listenSocket<\/span>.<span class=\"cm-variable\">Bind<\/span>(<span class=\"cm-variable\">ipEp<\/span>);<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/Listen<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">listenSocket<\/span>.<span class=\"cm-variable\">Listen<\/span>(<span class=\"cm-number\">0<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">Console<\/span>.<span class=\"cm-variable\">WriteLine<\/span>(<span class=\"cm-string\">\"Server Activated\"<\/span>);<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/Async Accept<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">listenSocket<\/span>.<span class=\"cm-variable\">BeginAccept<\/span>(<span class=\"cm-variable\">AcceptCallback<\/span>, <span class=\"cm-variable\">listenSocket<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">Console<\/span>.<span class=\"cm-variable\">ReadLine<\/span>();<\/span><br \/><span role=\"presentation\">}<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">AcceptCallback<\/span>(<span class=\"cm-variable\">IAsyncResult<\/span> <span class=\"cm-variable\">result<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">try<\/span><\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Console<\/span>.<span class=\"cm-variable\">WriteLine<\/span>(<span class=\"cm-string\">\"Server Accepted\"<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Socket<\/span> <span class=\"cm-variable\">listenfd<\/span> <span class=\"cm-operator\">=<\/span> (<span class=\"cm-variable\">Socket<\/span>)<span class=\"cm-variable\">result<\/span>.<span class=\"cm-variable\">AsyncState<\/span>;<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u70ba\u9023\u63a5\u5206\u914d\u4e00\u500bClientState<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Socket<\/span> <span class=\"cm-variable\">clientfd<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">listenfd<\/span>.<span class=\"cm-variable\">EndAccept<\/span>(<span class=\"cm-variable\">result<\/span>); <span class=\"cm-comment\">\/\/\u8fd4\u56de\u9023\u63a5\u5230\u670d\u52d9\u7aef\u7684\u5ba2\u6236\u7aefSocket<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">ClientState<\/span> <span class=\"cm-variable\">state<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">ClientState<\/span>();<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">state<\/span>.<span class=\"cm-variable\">socket<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">clientfd<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">clients<\/span>.<span class=\"cm-variable\">Add<\/span>(<span class=\"cm-variable\">clientfd<\/span>, <span class=\"cm-variable\">state<\/span>);<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u7570\u6b65\u63a5\u6536\u5ba2\u6236\u7aef\u6578\u64da<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">clientfd<\/span>.<span class=\"cm-variable\">BeginReceive<\/span>(<span class=\"cm-variable\">state<\/span>.<span class=\"cm-variable\">readBuff<\/span>, <span class=\"cm-number\">0<\/span>, <span class=\"cm-number\">1024<\/span>, <span class=\"cm-number\">0<\/span>, <span class=\"cm-variable\">ReceiveCallback<\/span>, <span class=\"cm-variable\">state<\/span>);<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u91cd\u65b0\u958b\u59cb\u63a5\u6536\u9023\u63a5<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">listenfd<\/span>.<span class=\"cm-variable\">BeginAccept<\/span>(<span class=\"cm-variable\">AcceptCallback<\/span>, <span class=\"cm-variable\">listenfd<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">catch<\/span>(<span class=\"cm-variable\">SocketException<\/span> <span class=\"cm-variable\">ex<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Console<\/span>.<span class=\"cm-variable\">WriteLine<\/span>(<span class=\"cm-string\">\"Socket Accept Failed: \"<\/span> <span class=\"cm-operator\">+<\/span> <span class=\"cm-variable\">ex<\/span>.<span class=\"cm-variable\">ToString<\/span>());<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u63a5\u6536\u6578\u64da<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u4f7f\u7528\u8207\u5ba2\u6236\u7aef\u76f8\u540c\u7684BeginReceive\/EndReceive<\/span><\/p><\/li><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">AcceptCallback<\/span>(<span class=\"cm-variable\">IAsyncResult<\/span> <span class=\"cm-variable\">result<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">try<\/span><\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/...<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u7570\u6b65\u63a5\u6536\u5ba2\u6236\u7aef\u6578\u64da<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">clientfd<\/span>.<span class=\"cm-variable\">BeginReceive<\/span>(<span class=\"cm-variable\">state<\/span>.<span class=\"cm-variable\">readBuff<\/span>, <span class=\"cm-number\">0<\/span>, <span class=\"cm-number\">1024<\/span>, <span class=\"cm-number\">0<\/span>, <span class=\"cm-variable\">ReceiveCallback<\/span>, <span class=\"cm-variable\">state<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/...<\/span><\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/...<\/span><\/span><br \/><span role=\"presentation\">}<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">ReceiveCallback<\/span>(<span class=\"cm-variable\">IAsyncResult<\/span> <span class=\"cm-variable\">result<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">try<\/span><\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">ClientState<\/span> <span class=\"cm-variable\">state<\/span> <span class=\"cm-operator\">=<\/span> (<span class=\"cm-variable\">ClientState<\/span>)<span class=\"cm-variable\">result<\/span>.<span class=\"cm-variable\">AsyncState<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Socket<\/span> <span class=\"cm-variable\">clientfd<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">state<\/span>.<span class=\"cm-variable\">socket<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">count<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">clientfd<\/span>.<span class=\"cm-variable\">EndReceive<\/span>(<span class=\"cm-variable\">result<\/span>); <span class=\"cm-comment\">\/\/\u6578\u64da\u63a5\u6536\u5b8c\u7562\uff0c\u8fd4\u56de\u503c&lt;=0\u4ee3\u8868Socket\u9023\u63a5\u65b7\u958b<\/span><\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">count<\/span> <span class=\"cm-operator\">==<\/span> <span class=\"cm-number\">0<\/span>) <span class=\"cm-comment\">\/\/\u5ba2\u6236\u7aef\u95dc\u9589<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">clientfd<\/span>.<span class=\"cm-variable\">Close<\/span>();<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">clients<\/span>.<span class=\"cm-variable\">Remove<\/span>(<span class=\"cm-variable\">clientfd<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Console<\/span>.<span class=\"cm-variable\">WriteLine<\/span>(<span class=\"cm-string\">\"Socket Closed\"<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">return<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u8655\u7406\u6578\u64da<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">recvStr<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">System<\/span>.<span class=\"cm-variable\">Text<\/span>.<span class=\"cm-variable\">Encoding<\/span>.<span class=\"cm-variable\">UTF8<\/span>.<span class=\"cm-variable\">GetString<\/span>(<span class=\"cm-variable\">state<\/span>.<span class=\"cm-variable\">readBuff<\/span>, <span class=\"cm-number\">0<\/span>, <span class=\"cm-variable\">count<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">byte<\/span>[] <span class=\"cm-variable\">sendBytes<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">System<\/span>.<span class=\"cm-variable\">Text<\/span>.<span class=\"cm-variable\">Encoding<\/span>.<span class=\"cm-variable\">UTF8<\/span>.<span class=\"cm-variable\">GetBytes<\/span>(<span class=\"cm-variable\">recvStr<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">clientfd<\/span>.<span class=\"cm-variable\">Send<\/span>(<span class=\"cm-variable\">sendBytes<\/span>);<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u91cd\u65b0\u958b\u59cb\u63a5\u6536\u6578\u64da<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">clientfd<\/span>.<span class=\"cm-variable\">BeginReceive<\/span>(<span class=\"cm-variable\">state<\/span>.<span class=\"cm-variable\">readBuff<\/span>, <span class=\"cm-number\">0<\/span>, <span class=\"cm-number\">1024<\/span>, <span class=\"cm-number\">0<\/span>, <span class=\"cm-variable\">ReceiveCallback<\/span>, <span class=\"cm-variable\">state<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">catch<\/span>(<span class=\"cm-variable\">SocketException<\/span> <span class=\"cm-variable\">ex<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Console<\/span>.<span class=\"cm-variable\">WriteLine<\/span>(<span class=\"cm-string\">\"Socket Receive Failed: \"<\/span> <span class=\"cm-operator\">+<\/span> <span class=\"cm-variable\">ex<\/span>.<span class=\"cm-variable\">ToString<\/span>());<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><\/ul><\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-80c4833 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"80c4833\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6714400\" data-id=\"6714400\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d108c0f elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"d108c0f\" data-element_type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-c55e25b elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"c55e25b\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6e69c2f\" data-id=\"6e69c2f\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-0eddc22 elementor-widget elementor-widget-text-editor\" data-id=\"0eddc22\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<h4 class=\"md-end-block md-heading\"><span style=\"text-decoration: underline;\"><strong><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u72c0\u614b\u6aa2\u6e2c\uff08Poll\uff09<\/span><\/span><\/span><\/strong><\/span><\/h4><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline md-expand\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">Poll<\/span><\/span><\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable-3\">bool<\/span> <span class=\"cm-def\">Pool<\/span>(<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">microSeconds<\/span>, <span class=\"cm-variable\">SelectMode<\/span> <span class=\"cm-variable\">mode<\/span>)<\/span><\/pre><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">microSeconds\uff1a\u7b49\u5f85\u56de\u61c9\u7684\u6642\u9593\uff08\u5fae\u79d2\uff09\uff0c\u5982\u679c\u53c3\u6578\u70ba-1\uff0c\u8868\u793a\u7121\u9650\u671f\u7b49\u5f85\u97ff\u61c9\uff08\u963b\u585e\uff09\uff1b\u5982\u679c\u53c3\u6578\u70ba0\uff0c\u8868\u793a\u4e0d\u963b\u585e<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">mode\uff1a<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">SelectMode.SelectRead\uff1a\u5982\u679cSocket\u53ef\u8b80\uff08\u7de9\u6c96\u5340\u6709\u6578\u64da\u53ef\u4ee5\u8b80\u53d6\uff09\uff0c\u8fd4\u56detrue<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">SelectMode.SelectWrite\uff1a\u5982\u679cSocket\u53ef\u5beb\uff08\u7de9\u6c96\u5340\u6709\u6578\u64da\u53ef\u4ee5\u767c\u9001\uff09\uff0c\u8fd4\u56detrue<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">SelectMode.SelectError\uff1a\u9023\u63a5\u5931\u6557\u8fd4\u56detrue<\/span><\/p><\/li><\/ul><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u539f\u7406\uff1a<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u901a\u904eSelectMode\u6aa2\u67e5Socket\u7684\u72c0\u614b\u662f\u5426\u53ef\u8b80\/\u53ef\u5beb\/\u9023\u63a5\u5931\u6557<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u5728\u6307\u5b9a\u6642\u6bb5\u5167\u963b\u6b62\u57f7\u884c<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u76ee\u7684\uff1a<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u89e3\u6c7a\u540c\u6b65\u7a0b\u5e8f\u7684\u963b\u585e\u554f\u984c<\/span><\/span><\/span><span class=\"md-plain\">\uff0c\u5728\u963b\u585e\u65b9\u6cd5\u524d\u505a\u5224\u65b7\uff0c<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u6709\u6578\u64da\u8b80\u6642\u624dReceive\uff0c\u6709\u6578\u64da\u5beb\u6642\u624dSend<\/span><\/span><\/span><\/p><\/li><\/ul><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u5ba2\u6236\u7aefPoll<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-keyword\">private<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">Update<\/span>()<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span> (<span class=\"cm-variable\">socket<\/span> <span class=\"cm-operator\">==<\/span> <span class=\"cm-atom\">null<\/span>) { <span class=\"cm-keyword\">return<\/span>; }<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u6709\u53ef\u8b80\u6578\u64da<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">socket<\/span>.<span class=\"cm-variable\">Poll<\/span>(<span class=\"cm-number\">0<\/span>, <span class=\"cm-variable\">SelectMode<\/span>.<span class=\"cm-variable\">SelectRead<\/span>))<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">byte<\/span>[] <span class=\"cm-variable\">readBuff<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable-3\">byte<\/span>[<span class=\"cm-number\">1024<\/span>];<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">count<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">socket<\/span>.<span class=\"cm-variable\">Receive<\/span>(<span class=\"cm-variable\">readBuff<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">recvStr<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">System<\/span>.<span class=\"cm-variable\">Text<\/span>.<span class=\"cm-variable\">Encoding<\/span>.<span class=\"cm-variable\">UTF8<\/span>.<span class=\"cm-variable\">GetString<\/span>(<span class=\"cm-variable\">readBuff<\/span>, <span class=\"cm-number\">0<\/span>, <span class=\"cm-variable\">count<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">responseText<\/span>.<span class=\"cm-variable\">text<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">recvStr<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u670d\u52d9\u7aefPoll<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-keyword\">static<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">Main<\/span>(<span class=\"cm-variable-3\">string<\/span>[] <span class=\"cm-variable\">args<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/Create Socket ...<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/Bind ...<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/Listen ...<\/span><\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">while<\/span> (<span class=\"cm-atom\">true<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u6aa2\u67e5\u6709\u6c92\u6709\u5ba2\u6236\u7aef\u9023\u63a5<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">listenSocket<\/span>.<span class=\"cm-variable\">Poll<\/span>(<span class=\"cm-number\">0<\/span>, <span class=\"cm-variable\">SelectMode<\/span>.<span class=\"cm-variable\">SelectRead<\/span>))<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">ReadListenfd<\/span>(<span class=\"cm-variable\">listenSocket<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">foreach<\/span> (<span class=\"cm-variable\">ClientState<\/span> <span class=\"cm-variable\">state<\/span> <span class=\"cm-keyword\">in<\/span> <span class=\"cm-variable\">clients<\/span>.<span class=\"cm-variable\">Values<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Socket<\/span> <span class=\"cm-variable\">clientfd<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">state<\/span>.<span class=\"cm-variable\">socket<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u6aa2\u67e5\u5ba2\u6236\u7aefSocket\u6709\u6c92\u6709\u53ef\u8b80\u7684\u4fe1\u606f<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">clientfd<\/span>.<span class=\"cm-variable\">Poll<\/span>(<span class=\"cm-number\">0<\/span>, <span class=\"cm-variable\">SelectMode<\/span>.<span class=\"cm-variable\">SelectRead<\/span>))<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span> (<span class=\"cm-operator\">!<\/span><span class=\"cm-variable\">ReadClientfd<\/span>(<span class=\"cm-variable\">clientfd<\/span>))<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">break<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">System<\/span>.<span class=\"cm-variable\">Threading<\/span>.<span class=\"cm-variable\">Thread<\/span>.<span class=\"cm-variable\">Sleep<\/span>(<span class=\"cm-number\">1<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">}<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">ReadListenfd<\/span>(<span class=\"cm-variable\">Socket<\/span> <span class=\"cm-variable\">listenSocket<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">Console<\/span>.<span class=\"cm-variable\">WriteLine<\/span>(<span class=\"cm-string\">\"Accept\"<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">Socket<\/span> <span class=\"cm-variable\">clientfd<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">listenSocket<\/span>.<span class=\"cm-variable\">Accept<\/span>();<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">ClientState<\/span> <span class=\"cm-variable\">cs<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">ClientState<\/span>();<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">cs<\/span>.<span class=\"cm-variable\">socket<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">clientfd<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">clients<\/span>.<span class=\"cm-variable\">Add<\/span>(<span class=\"cm-variable\">clientfd<\/span>, <span class=\"cm-variable\">cs<\/span>);<\/span><br \/><span role=\"presentation\">}<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-variable-3\">bool<\/span> <span class=\"cm-def\">ReadClientfd<\/span>(<span class=\"cm-variable\">Socket<\/span> <span class=\"cm-variable\">clientSocket<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">ClientState<\/span> <span class=\"cm-variable\">cs<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">clients<\/span>[<span class=\"cm-variable\">clientSocket<\/span>];<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u63a5\u6536\u6578\u64da<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">count<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-number\">0<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">try<\/span><\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">count<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">clientSocket<\/span>.<span class=\"cm-variable\">Receive<\/span>(<span class=\"cm-variable\">cs<\/span>.<span class=\"cm-variable\">readBuff<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">catch<\/span>(<span class=\"cm-variable\">SocketException<\/span> <span class=\"cm-variable\">ex<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">clientSocket<\/span>.<span class=\"cm-variable\">Close<\/span>();<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">clients<\/span>.<span class=\"cm-variable\">Remove<\/span>(<span class=\"cm-variable\">clientSocket<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Console<\/span>.<span class=\"cm-variable\">WriteLine<\/span>(<span class=\"cm-string\">\"Receive Socket Exception: \"<\/span> <span class=\"cm-operator\">+<\/span> <span class=\"cm-variable\">ex<\/span>.<span class=\"cm-variable\">ToString<\/span>());<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">return<\/span> <span class=\"cm-atom\">false<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u5ba2\u6236\u7aef\u95dc\u9589<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">count<\/span> <span class=\"cm-operator\">==<\/span> <span class=\"cm-number\">0<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">clientSocket<\/span>.<span class=\"cm-variable\">Close<\/span>();<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">clients<\/span>.<span class=\"cm-variable\">Remove<\/span>(<span class=\"cm-variable\">clientSocket<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">Console<\/span>.<span class=\"cm-variable\">WriteLine<\/span>(<span class=\"cm-string\">\"Socket Closed\"<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">return<\/span> <span class=\"cm-atom\">false<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u5ee3\u64ad\u4fe1\u606f\u81f3\u6240\u6709\u5ba2\u6236\u7aef<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">recvStr<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">System<\/span>.<span class=\"cm-variable\">Text<\/span>.<span class=\"cm-variable\">Encoding<\/span>.<span class=\"cm-variable\">UTF8<\/span>.<span class=\"cm-variable\">GetString<\/span>(<span class=\"cm-variable\">cs<\/span>.<span class=\"cm-variable\">readBuff<\/span>, <span class=\"cm-number\">0<\/span>, <span class=\"cm-variable\">count<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">Console<\/span>.<span class=\"cm-variable\">WriteLine<\/span>(<span class=\"cm-string\">\"Receive: \"<\/span> <span class=\"cm-operator\">+<\/span> <span class=\"cm-variable\">recvStr<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">sendStr<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">clientSocket<\/span>.<span class=\"cm-variable\">RemoteEndPoint<\/span>.<span class=\"cm-variable\">ToString<\/span>() <span class=\"cm-operator\">+<\/span> <span class=\"cm-string\">\":\"<\/span> <span class=\"cm-operator\">+<\/span> <span class=\"cm-variable\">recvStr<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable-3\">byte<\/span>[] <span class=\"cm-variable\">sendBytes<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">System<\/span>.<span class=\"cm-variable\">Text<\/span>.<span class=\"cm-variable\">Encoding<\/span>.<span class=\"cm-variable\">UTF8<\/span>.<span class=\"cm-variable\">GetBytes<\/span>(<span class=\"cm-variable\">sendStr<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">foreach<\/span> (<span class=\"cm-variable\">ClientState<\/span> <span class=\"cm-variable\">state<\/span> <span class=\"cm-keyword\">in<\/span> <span class=\"cm-variable\">clients<\/span>.<span class=\"cm-variable\">Values<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">state<\/span>.<span class=\"cm-variable\">socket<\/span>.<span class=\"cm-variable\">Send<\/span>(<span class=\"cm-variable\">sendBytes<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">return<\/span> <span class=\"cm-atom\">true<\/span>;<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u5f0a\u7aef<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item md-focus-container\"><p class=\"md-end-block md-p md-focus\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u5982\u679c\u6c92\u6709\u6536\u5230\u6578\u64da\uff0cPoll\u5ba2\u6236\u7aef\/\u670d\u52d9\u7aef\u7684\u5faa\u74b0\u4e5f\u6703\u4e00\u76f4\u5728\u505a\u6aa2\u6e2c\uff0c\u9020\u6210\u6d6a\u8cbb<\/span><\/span><\/span><\/p><\/li><\/ul><\/li><\/ul>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e3249c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"9e3249c\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-77191dc\" data-id=\"77191dc\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-c291eb5 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"c291eb5\" data-element_type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-8e9af0a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"8e9af0a\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c158e11\" data-id=\"c158e11\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7ec014f elementor-widget elementor-widget-text-editor\" data-id=\"7ec014f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-text-editor elementor-clearfix\">\n\t\t\t\t<h4 class=\"md-end-block md-heading\"><span style=\"text-decoration: underline;\"><strong><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u591a\u8def\u8907\u7528\uff08Select\uff09<\/span><\/span><\/span><\/strong><\/span><\/h4><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u591a\u8def\u8907\u7528\uff1a<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u540c\u6642\u8655\u7406\u591a\u8def\u4fe1\u865f\uff08\u5982\u591a\u500bSocket\u7684\u72c0\u614b\uff09<\/span><\/span><\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u8a2d\u7f6e\u8981\u76e3\u807d\u7684Socket\u5217\u8868\uff0c\u5982\u679c\u6709Socket\u53ef\u8b80\/\u53ef\u5beb\/\u5831\u932f\uff0c\u5c31\u8fd4\u56de\u9019\u4e9bSocket\u5217\u8868\uff0c\u5982\u679c\u6c92\u6709\u5c31\u963b\u585e\u7a0b\u5e8f\uff0c\u9632\u6b62CPU\u8cc7\u6e90\u7684\u6d88\u8017<\/span><\/span><\/span><\/p><\/li><\/ul><\/li><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">Select<\/span>(<span class=\"cm-variable\">IList<\/span> <span class=\"cm-variable\">checkRead<\/span>, <span class=\"cm-variable\">IList<\/span> <span class=\"cm-variable\">checkWrite<\/span>, <span class=\"cm-variable\">IList<\/span>, <span class=\"cm-variable\">checkError<\/span>, <span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">microSeconds<\/span>)<\/span><\/pre><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u8abf\u7528Select\u5f8c\uff0cSelect\u6703<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u6839\u64da\u662fcheckRead\uff08\u6aa2\u67e5\u53ef\u8b80\u6027\uff09\u9084\u662fcheckWrite\uff08\u6aa2\u67e5\u53ef\u5beb\u6027\uff09\u6216\u8005checkError\uff08\u6aa2\u67e5\u932f\u8aa4\u689d\u4ef6\uff09\uff0c\u5c0d\u6bcf\u500b\u5217\u8868\u9032\u884c\u6aa2\u67e5\u548c\u4fee\u6539<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u7576\u6709\u67d0\u500b\/\u591a\u500bSocket\u6eff\u8db3\u689d\u4ef6\u6642\uff0c\u6703\u4fee\u6539\u9019\u4e9b\u5217\u8868<\/span><\/span><\/span><\/p><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">Select\u670d\u52d9\u7aef<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-comment\">\/\/Select\u6a21\u5f0f<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">List<\/span><span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">Socket<\/span><span class=\"cm-operator\">&gt;<\/span> <span class=\"cm-variable\">checkRead<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">List<\/span><span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">Socket<\/span><span class=\"cm-operator\">&gt;<\/span>();<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">while<\/span> (<span class=\"cm-atom\">true<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">checkRead<\/span>.<span class=\"cm-variable\">Clear<\/span>();<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">checkRead<\/span>.<span class=\"cm-variable\">Add<\/span>(<span class=\"cm-variable\">listenSocket<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">foreach<\/span> (<span class=\"cm-variable\">ClientState<\/span> <span class=\"cm-variable\">clientState<\/span> <span class=\"cm-keyword\">in<\/span> <span class=\"cm-variable\">clients<\/span>.<span class=\"cm-variable\">Values<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">checkRead<\/span>.<span class=\"cm-variable\">Add<\/span>(<span class=\"cm-variable\">clientState<\/span>.<span class=\"cm-variable\">socket<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">Socket<\/span>.<span class=\"cm-variable\">Select<\/span>(<span class=\"cm-variable\">checkRead<\/span>, <span class=\"cm-atom\">null<\/span>, <span class=\"cm-atom\">null<\/span>, <span class=\"cm-number\">1000<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">foreach<\/span> (<span class=\"cm-variable\">Socket<\/span> <span class=\"cm-variable\">socket<\/span> <span class=\"cm-keyword\">in<\/span> <span class=\"cm-variable\">checkRead<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">socket<\/span> <span class=\"cm-operator\">==<\/span> <span class=\"cm-variable\">listenSocket<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">ReadListenfd<\/span>(<span class=\"cm-variable\">socket<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">else<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">ReadClientfd<\/span>(<span class=\"cm-variable\">socket<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">Select\u5ba2\u6236\u7aef<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><pre class=\"md-fences md-end-block ty-contain-cm modeLoaded\" lang=\"C#\" spellcheck=\"false\"><span role=\"presentation\"><span class=\"cm-keyword\">private<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">Update<\/span>()<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span> (<span class=\"cm-variable\">socket<\/span> <span class=\"cm-operator\">==<\/span> <span class=\"cm-atom\">null<\/span>) { <span class=\"cm-keyword\">return<\/span>; }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/Select<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">checkRead<\/span>.<span class=\"cm-variable\">Clear<\/span>();<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">checkRead<\/span>.<span class=\"cm-variable\">Add<\/span>(<span class=\"cm-variable\">socket<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">Socket<\/span>.<span class=\"cm-variable\">Select<\/span>(<span class=\"cm-variable\">checkRead<\/span>, <span class=\"cm-atom\">null<\/span>, <span class=\"cm-atom\">null<\/span>, <span class=\"cm-number\">0<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">foreach<\/span> (<span class=\"cm-variable\">Socket<\/span> <span class=\"cm-variable\">s<\/span> <span class=\"cm-keyword\">in<\/span> <span class=\"cm-variable\">checkRead<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">byte<\/span>[] <span class=\"cm-variable\">readBuff<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable-3\">byte<\/span>[<span class=\"cm-number\">1024<\/span>];<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">count<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">socket<\/span>.<span class=\"cm-variable\">Receive<\/span>(<span class=\"cm-variable\">readBuff<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">recvStr<\/span> <span class=\"cm-operator\">=<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">System<\/span>.<span class=\"cm-variable\">Text<\/span>.<span class=\"cm-variable\">Encoding<\/span>.<span class=\"cm-variable\">UTF8<\/span>.<span class=\"cm-variable\">GetString<\/span>(<span class=\"cm-variable\">readBuff<\/span>, <span class=\"cm-number\">0<\/span>, <span class=\"cm-variable\">count<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">responseText<\/span>.<span class=\"cm-variable\">text<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">recvStr<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><\/ul><\/li><\/ul><div class=\"md-hr md-end-block\" tabindex=\"-1\"><hr \/><\/div>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u66f8\u540d\uff1a\u300aUnity3D\u7db2\u7d61\u904a\u6232\u5be6\u8e10\u300b\uff08\u7b2c2\u7248\uff09\u4f5c\u8005\uff1a\u7f85\u57f9\u7fbd \u6240\u8b80\u7248\u672c\uff1a\u6a5f\u68b0\u5de5\u696d\u51fa\u7248\u793e<\/p>\n","protected":false},"author":1,"featured_media":947,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,18,25],"tags":[],"class_list":["post-2415","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-reading-notes","category-developing","category-u3d-net"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/lonelinerd.com\/wp-content\/uploads\/2021\/03\/FeatureCover_ReadingNotes.png","_links":{"self":[{"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/posts\/2415","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/comments?post=2415"}],"version-history":[{"count":12,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/posts\/2415\/revisions"}],"predecessor-version":[{"id":2430,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/posts\/2415\/revisions\/2430"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/media\/947"}],"wp:attachment":[{"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/media?parent=2415"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/categories?post=2415"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/tags?post=2415"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}