{"id":2491,"date":"2022-09-28T01:42:47","date_gmt":"2022-09-27T17:42:47","guid":{"rendered":"https:\/\/lonelinerd.com\/?p=2491"},"modified":"2022-10-16T22:09:01","modified_gmt":"2022-10-16T14:09:01","slug":"u3d-net-7","status":"publish","type":"post","link":"https:\/\/lonelinerd.com\/index.php\/2022\/09\/28\/u3d-net-7\/","title":{"rendered":"\u300aUnity3D\u7db2\u7d61\u904a\u6232\u5be6\u8e10\u300b\uff08\u7b2c2\u7248\uff09\u8981\u9ede\u6458\u9304 &#8211; \u300c\u901a\u7528\u670d\u52d9\u7aef\u6846\u67b6\u300d"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"2491\" class=\"elementor elementor-2491\">\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-0921e1d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"0921e1d\" 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-41e8d79\" data-id=\"41e8d79\" 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-7391447 elementor-widget elementor-widget-text-editor\" data-id=\"7391447\" 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-fc99790 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"fc99790\" 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-9c9a522\" data-id=\"9c9a522\" 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-d32e563 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"d32e563\" 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-eef312d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"eef312d\" 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-b16b131\" data-id=\"b16b131\" 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-d032f69 elementor-widget elementor-widget-text-editor\" data-id=\"d032f69\" 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><span style=\"text-decoration: underline;\"><strong>Server Framework Code 7z(Google Drive):<\/strong><\/span><\/h4><h4><a href=\"https:\/\/drive.google.com\/file\/d\/1Up5WeOsL9Ug7hXs__wbdGxOLY_qumgXT\/view?usp=sharing\" target=\"_blank\" rel=\"noopener\">https:\/\/drive.google.com\/file\/d\/1Up5WeOsL9Ug7hXs__wbdGxOLY_qumgXT\/view?usp=sharing<\/a><\/h4>\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-58a9ed4 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"58a9ed4\" 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-fe254ee\" data-id=\"fe254ee\" 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-66e2006 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"66e2006\" 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-6e89107 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6e89107\" 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-80a5c5e\" data-id=\"80a5c5e\" 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-42985b2 elementor-widget elementor-widget-text-editor\" data-id=\"42985b2\" 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\">\u901a\u7528\u670d\u52d9\u7aef\u6846\u67b6\u53ca\u5167\u90e8\u908f\u8f2f<\/span><\/strong><\/span><\/h4><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-plain\">\u7e3d\u9ad4\u67b6\u69cb<\/span><\/p><\/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-4fca81b elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"4fca81b\" 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-fed483e\" data-id=\"fed483e\" 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-0bc35ad elementor-widget elementor-widget-image\" data-id=\"0bc35ad\" 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=\"768\" height=\"277\" src=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/09\/Ch7_1-768x277.jpg\" class=\"attachment-medium_large size-medium_large wp-image-2500\" alt=\"\" srcset=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/09\/Ch7_1-768x277.jpg 768w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/09\/Ch7_1-300x108.jpg 300w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/09\/Ch7_1-1024x369.jpg 1024w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/09\/Ch7_1-1536x554.jpg 1536w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/09\/Ch7_1-2048x739.jpg 2048w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/>\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-13c5dd3 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"13c5dd3\" 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-07be666\" data-id=\"07be666\" 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-5319f31 elementor-widget elementor-widget-text-editor\" data-id=\"5319f31\" 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 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-plain md-expand\">\u670d\u52d9\u7aef\u7a0b\u5e8f\u7684\u5169\u5927\u6838\u5fc3\uff1a<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u8655\u7406\u5ba2\u6236\u7aef\u6d88\u606f\u3001\u5b58\u5132\u73a9\u5bb6\u6578\u64da<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item md-focus-container\"><p class=\"md-end-block md-p md-focus\"><span class=\"md-plain md-expand\">\u6a21\u584a\u5283\u5206<\/span><\/p><\/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-d720263 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"d720263\" 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-af11ca5\" data-id=\"af11ca5\" 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-8370b69 elementor-widget elementor-widget-image\" data-id=\"8370b69\" 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=\"768\" height=\"355\" src=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/09\/Ch7_2-768x355.jpg\" class=\"attachment-medium_large size-medium_large wp-image-2501\" alt=\"\" srcset=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/09\/Ch7_2-768x355.jpg 768w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/09\/Ch7_2-300x139.jpg 300w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/09\/Ch7_2-1024x474.jpg 1024w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/09\/Ch7_2-1536x711.jpg 1536w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/09\/Ch7_2-2048x948.jpg 2048w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/>\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-c058fe2 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"c058fe2\" 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-3d59371\" data-id=\"3d59371\" 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-bb027ee elementor-widget elementor-widget-text-editor\" data-id=\"bb027ee\" 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><li><span class=\"md-html-inline md-expand\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u7db2\u7d61\u5e95\u5c64<\/span><\/span><\/span><br \/><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u8655\u7406\u7db2\u7d61\u9023\u63a5<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u7c98\u5305\u534a\u5305\u8655\u7406\/\u89e3\u6790\u5354\u8b70\u7b49\u7b49<\/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\">4\u500b\u90e8\u5206<\/span><\/span><\/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 md-expand\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u76e3\u807d\u6d88\u606f<\/span><\/span><\/span><span class=\"md-plain\">\u4e26\u9032\u884c\u8655\u7406\u7684\u985e\uff08MsgHandler\uff09<\/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\">\u76e3\u807d\u7db2\u7d61\u4e8b\u4ef6<\/span><\/span><\/span><span class=\"md-plain md-expand\">\u4e26\u9032\u884c\u8655\u7406\u7684\u985e\uff08EventHandler\uff09<\/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 md-expand\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u5b9a\u7fa9\u5ba2\u6236\u7aef\u4fe1\u606f<\/span><\/span><\/span><span class=\"md-plain\">\u7684ClientState\u985e<\/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-keyword\">class<\/span> <span class=\"cm-def\">ClientState<\/span><\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable\">Socket<\/span> <span class=\"cm-variable\">socket<\/span>; <span class=\"cm-comment\">\/\/\u8207\u5ba2\u6236\u7aef\u9023\u63a5\u7684socket<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable\">ByteArray<\/span> <span class=\"cm-variable\">readBuff<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">ByteArray<\/span>(); <span class=\"cm-comment\">\/\/\u8b80\u7de9\u6c96\u5340<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable-3\">long<\/span> <span class=\"cm-variable\">lastPingTime<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-number\">0<\/span>; <span class=\"cm-comment\">\/\/\u4e0a\u6b21\u5ba2\u6236\u7aef\u767c\u4f86Ping\u7684\u6642\u9593\u8a18\u9304<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable\">Player<\/span> <span class=\"cm-variable\">player<\/span>; <span class=\"cm-comment\">\/\/\u5c0d\u73a9\u5bb6\u5c0d\u8c61\u7684\u5f15\u7528<\/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-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u8655\u7406Select\u591a\u8def\u8907\u7528<\/span><\/span><\/span><span class=\"md-plain\">\u7684\u7db2\u7d61\u7ba1\u7406\u5668<\/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\">\u5275\u5efa\u76e3\u807dSocket -&gt; \u7d81\u5b9a\u7aef\u53e3 -&gt; \u958b\u555f\u76e3\u807d -&gt; \u9032\u5165Select\u5faa\u74b0<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">Select\u5faa\u74b0\uff1a\u5224\u65b7Select\u8fd4\u56de\u7684\u53ef\u8b80\u5217\u8868\u4e2d\u7684\u6709\u6548\u5143\u7d20\u662f\u76e3\u807d\u7aef\u9084\u662f\u5ba2\u6236\u7aef\uff0c\u524d\u8005\u4ee3\u8868\u6709\u65b0\u9023\u63a5\uff0c\u5f8c\u8005\u4ee3\u8868\u5ba2\u6236\u7aef\u767c\u4f86\u4e86\u6d88\u606f<\/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\">StartLoop<\/span>(<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">listenPort<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/Socket\u5275\u5efa<\/span><\/span><br \/><span role=\"presentation\"> \u00a0  \/\/...<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u7d81\u5b9a\u7aef\u53e3<br \/><\/span><\/span>    \/\/...<span role=\"presentation\"><span class=\"cm-comment\"><br \/><\/span><\/span>    \/\/\u958b\u555f\u76e3\u807d<br \/>    \/\/...<br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/Select\u5faa\u74b0<\/span><\/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  <span class=\"cm-comment\">\/\/\u91cd\u7f6echeckRead<br \/><\/span><\/span>        \/\/...<br \/><span role=\"presentation\"> \u00a0 \u00a0 \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 \u00a0 \u00a0<span class=\"cm-keyword\">for<\/span> (<span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">i<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-number\">0<\/span>; <span class=\"cm-variable\">i<\/span> <span class=\"cm-operator\">&lt;<\/span> <span class=\"cm-variable\">checkRead<\/span>.<span class=\"cm-variable\">Count<\/span>; <span class=\"cm-variable\">i<\/span><span class=\"cm-operator\">++<\/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\">s<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">checkRead<\/span>[<span class=\"cm-variable\">i<\/span>];<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">s<\/span> <span class=\"cm-operator\">==<\/span> <span class=\"cm-variable\">listenfd<\/span>){<span class=\"cm-comment\">\/\/\u6709\u65b0\u9023\u63a5}<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">else{<span class=\"cm-comment\">\/\/\u5ba2\u6236\u7aef\u767c\u4f86\u6d88\u606f<\/span>}<\/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><\/ul><\/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-2c73d2a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"2c73d2a\" 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-fc51e16\" data-id=\"fc51e16\" 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-1dbafbf elementor-widget elementor-widget-text-editor\" data-id=\"1dbafbf\" 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><li style=\"list-style-type: none;\"><ul><li style=\"list-style-type: none;\"><ul><li style=\"list-style-type: none;\"><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\">\u65b0\u9023\u63a5\u7684\u8655\u7406<\/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\">\u8abf\u7528Accept\u63a5\u53d7\u5ba2\u6236\u7aef\u9023\u63a5<\/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\">\u65b0\u5efa\u4e00\u500b\u5ba2\u6236\u7aef\u4fe1\u606f\u5c0d\u8c61\uff0c\u5b58\u5165\u5ba2\u6236\u7aef\u4fe1\u606f\u5217\u8868<\/span><\/span><\/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\">ReadListenfd<\/span>(<span class=\"cm-variable\">Socket<\/span> <span class=\"cm-variable\">listenfd<\/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\">\/\/\u65b0\u5efa\u4e00\u500bsocket\u4f86\u63a5\u53d7\u5ba2\u6236\u7aef\u9023\u63a5<\/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\">Accept<\/span>();<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u586b\u5145\u5ba2\u6236\u7aef\u4fe1\u606f\u5217\u8868<\/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\"> \u00a0  }<br \/><\/span>    \/\/...<br \/><span role=\"presentation\">}<\/span><\/pre><\/li><\/ul><\/li><li class=\"md-list-item\"><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\">\u5ba2\u6236\u7aef\u7684\u8655\u7406<\/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\">\u8abf\u7528Receive\u63a5\u6536\u6578\u64da\uff0c\u5c07\u6578\u64da\u4fdd\u5b58\u5728\u7de9\u6c96\u5340<\/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\">\u8655\u7406\u7c98\u5305\u554f\u984c\uff0c\u89e3\u6790\u51fa\u5354\u8b70\u540d\u548c\u5354\u8b70\u9ad4<\/span><\/span><\/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 md-expand\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u6839\u64da\u5354\u8b70\u540d\u7372\u53d6\u6d88\u606f\uff0c\u4ee5\u5354\u8b70\u9ad4\u70ba\u53c3\u6578\u5206\u767c\u6d88\u606f<\/span><\/span><\/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\">ReadClientfd<\/span>(<span class=\"cm-variable\">Socket<\/span> <span class=\"cm-variable\">clientfd<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u63a5\u6536\u6578\u64da\uff0c\u5c07\u6578\u64da\u4fdd\u5b58\u5728\u7de9\u5b58\u5340<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">ClientState<\/span> <span class=\"cm-variable\">state<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">clients<\/span>[<span class=\"cm-variable\">clientfd<\/span>];<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">ByteArray<\/span> <span class=\"cm-variable\">readBuff<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">state<\/span>.<span class=\"cm-variable\">readBuff<\/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 \/><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u7de9\u5b58\u5340\u4e0d\u5920\u7684\u8655\u7406<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">readBuff<\/span>.<span class=\"cm-variable\">remain<\/span> <span class=\"cm-operator\">&lt;=<\/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\">OnReceiveData<\/span>(<span class=\"cm-variable\">state<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">readBuff<\/span>.<span class=\"cm-variable\">MoveBytes<\/span>();<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">readBuff<\/span>.<span class=\"cm-variable\">remain<\/span> <span class=\"cm-operator\">&lt;=<\/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\">Close<\/span>(<span class=\"cm-variable\">state<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">return<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><br \/><span role=\"presentation\"> \u00a0  <span class=\"cm-comment\">\/\/\u63a5\u6536\u5ba2\u6236\u7aef\u4fe1\u606f<\/span><\/span><span role=\"presentation\"><br \/><\/span>    \/\/...<br \/><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u6d88\u606f\u8655\u7406<br \/><\/span><\/span>    \/\/...<br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">OnReceiveData<\/span>(<span class=\"cm-variable\">state<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u79fb\u52d5\u7de9\u6c96\u5340<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">readBuff<\/span>.<span class=\"cm-variable\">CheckAndMoveBytes<\/span>();<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/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<div class=\"elementor-element elementor-element-b13b207 elementor-widget elementor-widget-text-editor\" data-id=\"b13b207\" 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><li style=\"list-style-type: none;\"><ul><li style=\"list-style-type: none;\"><ul><li style=\"list-style-type: none;\"><ul><li style=\"list-style-type: none;\"><ul><li 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\">\u6578\u64da\u8655\u7406<\/span><\/span><\/span><ul><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\">OnReceiveData<\/span>(<span class=\"cm-variable\">ClientState<\/span> <span class=\"cm-variable\">state<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u89e3\u6790\u5354\u8b70\u540d<br \/><\/span><\/span>    \/\/...<br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u89e3\u6790\u5354\u8b70\u9ad4<\/span><\/span><br \/><span role=\"presentation\"> \u00a0  \/\/...<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u5206\u767c\u6d88\u606f<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">MethodInfo<\/span> <span class=\"cm-variable\">mi<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">typeof<\/span>(<span class=\"cm-variable\">MsgHandler<\/span>).<span class=\"cm-variable\">GetMethod<\/span>(<span class=\"cm-variable\">protoName<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable-3\">object<\/span>[] <span class=\"cm-variable\">o<\/span> <span class=\"cm-operator\">=<\/span> { <span class=\"cm-variable\">state<\/span>, <span class=\"cm-variable\">msgBase<\/span> };<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">mi<\/span> <span class=\"cm-operator\">!=<\/span> <span class=\"cm-atom\">null<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">mi<\/span>.<span class=\"cm-variable\">Invoke<\/span>(<span class=\"cm-atom\">null<\/span>, <span class=\"cm-variable\">o<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><span role=\"presentation\"> \u00a0 <\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u7e7c\u7e8c\u8b80\u53d6\u6d88\u606f<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">readBuff<\/span>.<span class=\"cm-variable\">length<\/span> <span class=\"cm-operator\">&gt;<\/span> <span class=\"cm-number\">2<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">OnReceiveData<\/span>(<span class=\"cm-variable\">state<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/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-bde0ab1 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"bde0ab1\" 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-1a5fd61\" data-id=\"1a5fd61\" 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-9efdbeb elementor-widget elementor-widget-text-editor\" data-id=\"9efdbeb\" 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 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\">\u908f\u8f2f\u5c64<\/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\">\u6d88\u606f\u8655\u7406<\/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\">\u5ba2\u6236\u7aef\u6d88\u606f\/\u540c\u6b65\u8acb\u6c42\u7684\u8655\u7406\/\u628a\u4e00\u4e9b\u6d88\u606f\u8f49\u767c\u7d66\u6240\u6709\u76f8\u95dc\u7684\u5ba2\u6236\u7aef<\/span><\/span><\/span><\/p><\/li><\/ul><\/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\">\u4e8b\u4ef6\u8655\u7406<\/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\">\u73a9\u5bb6\u9023\u63a5\u4e8b\u4ef6\u7684\u8655\u7406\uff0c\u5982\u4e0a\/\u4e0b\u7dda\u6642\u7684\u521d\u59cb\u5316\u3001\u6578\u64da\u8a18\u9304<\/span><\/span><\/span><\/p><\/li><\/ul><\/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\">\u5b58\u5132\u7d50\u69cb<\/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\">\u6307\u5b9a\u9700\u8981\u4fdd\u5b58\u7684\u6578\u64da<\/span><\/p><\/li><\/ul><\/li><\/ul><\/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\">\u6578\u64da\u5eab\u5e95\u5c64<\/span><\/span><\/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 md-expand\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u4fdd\u5b58\/\u8b80\u53d6\u73a9\u5bb6\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-5b9c35c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"5b9c35c\" 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-edb91c5\" data-id=\"edb91c5\" 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-1fa4cc3 elementor-widget elementor-widget-text-editor\" data-id=\"1fa4cc3\" 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 class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u6d41\u7a0b<\/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 md-expand\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u9023\u63a5<\/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 md-expand\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u9023\u63a5\u672a\u767b\u9304<\/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\">\u5ba2\u6236\u7aef\u8abf\u7528Connect\u9023\u63a5\u670d\u52d9\u7aef<\/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\">\u6b64\u6642\u670d\u52d9\u7aef\u4e0d\u77e5\u9053\u73a9\u5bb6\u5177\u9ad4\u662f\u54ea\u500b\u89d2\u8272<\/span><\/span><\/span><\/p><\/li><\/ul><\/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\">\u767b\u9304\u6210\u529f<\/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\">\u5ba2\u6236\u7aef\u767c\u9001\u4e00\u689d\u5305\u542b\u300c\u7528\u6236\u540d\u3001\u5bc6\u78bc\u300d\u7b49\u4fe1\u606f\u7684\u767b\u9304\u5354\u8b70<\/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\">\u670d\u52d9\u7aef\u5c0d\u4fe1\u606f\u9032\u884c\u6aa2\u9a57\uff0c\u5c07\u9023\u63a5\u8207\u89d2\u8272\u5c0d\u61c9\uff0c\u5f9e\u6578\u64da\u5eab\u4e2d\u7372\u53d6\u89d2\u8272\u7684\u6578\u64da<\/span><\/span><\/span><\/p><\/li><\/ul><\/li><\/ul><\/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\">\u4ea4\u4e92\uff1a\u96d9\u7aef\u4e92\u901a\u5354\u8b70<\/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\">\u70ba\u4e86\u8b93\u96d9\u7aef\u6e9d\u901a\uff0c\u5354\u8b70\u6587\u4ef6\u9700\u8981\u540c\u6642\u5b58\u5728\u65bc\u670d\u52d9\u7aef\u8207\u5ba2\u6236\u7aef\u4e2d<\/span><\/span><\/span><\/p><\/li><\/ul><\/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\">\u767b\u51fa\uff1a\u73a9\u5bb6\u4e0b\u7dda\uff0c\u6578\u64da\u4fdd\u5b58\u5230\u6578\u64da\u5eab<\/span><\/span><\/span><\/p><\/li><\/ul><\/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\">\u5fc3\u8df3\u6a5f\u5236<\/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\">\u5ba2\u6236\u7aef\u5b9a\u6642\u6703\u5411\u5c07Ping\u5354\u8b70\u767c\u9001\u81f3\u670d\u52d9\u7aef\uff0c\u670d\u52d9\u7aef\u628a\u6536\u5230Ping\u7684\u6642\u9593\u4fdd\u5b58\u8d77\u4f86\uff0c\u7136\u5f8c\u767c\u9001Pong\u5354\u8b70\u56de\u5ba2\u6236\u7aef<\/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-comment\">\/\/\u5ba2\u6236\u7aef\u5217\u8868<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-variable\">Dictionary<\/span><span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">Socket<\/span>, <span class=\"cm-variable\">ClientState<\/span><span class=\"cm-operator\">&gt;<\/span> <span class=\"cm-variable\">clients<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">Dictionary<\/span><span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">Socket<\/span>, <span class=\"cm-variable\">ClientState<\/span><span class=\"cm-operator\">&gt;<\/span>();<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u5ba2\u6236\u7aef\u4fe1\u606f\u985e<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">class<\/span> <span class=\"cm-def\">ClientState<\/span><\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/...<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable-3\">long<\/span> <span class=\"cm-variable\">lastPingTime<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-number\">0<\/span>; <span class=\"cm-comment\">\/\/\u6700\u5f8c\u6536\u5230MsgPing\u5354\u8b70\u7684\u6642\u9593<\/span><\/span><br \/><span role=\"presentation\">}<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/SysMsgHandler.cs <\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u670d\u52d9\u7aef\u6536\u5230MsgPing\u5354\u8b70\uff0c\u66f4\u65b0\u8a72\u5ba2\u6236\u7aef\u4e0a\u6b21Ping\u7684\u6642\u9593\uff0c\u56de\u61c9Pong\u81f3\u8a72\u5ba2\u6236\u7aef<\/span><\/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\">MsgPing<\/span>(<span class=\"cm-variable\">ClientState<\/span> <span class=\"cm-variable\">state<\/span>, <span class=\"cm-variable\">MsgBase<\/span> <span class=\"cm-variable\">msgBase<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">state<\/span>.<span class=\"cm-variable\">lastPingTime<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">NetManager<\/span>.<span class=\"cm-variable\">GetTimeStamp<\/span>();<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">MsgPong<\/span> <span class=\"cm-variable\">msgPong<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">MsgPong<\/span>();<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">NetManager<\/span>.<span class=\"cm-variable\">Send<\/span>(<span class=\"cm-variable\">state<\/span>, <span class=\"cm-variable\">msgPong<\/span>);<\/span><br \/><span role=\"presentation\">}<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/NetManager.cs<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u9023\u63a5\u6210\u529f\u6642\u5148\u8a18\u9304\u4e00\u6b21<\/span><\/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\">listenfd<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/...<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">state<\/span>.<span class=\"cm-variable\">lastPingTime<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">GetTimeStamp<\/span>();<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/...<\/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-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u670d\u52d9\u7aef\u5b9a\u6642\u5668\u5faa\u74b0\u5c0d\u5ba2\u6236\u7aef\u5217\u8868\u904d\u6b77\u5224\u65b7\u7576\u524d\u6642\u9593 &#8211; \u4e0a\u6b21\u5ba2\u6236\u7aef\u767c\u51faPing\u6642\u9593\u662f\u5426\u5df2\u8d85\u6642\uff0c\u662f\u5247\u65b7\u958b\u8a72\u5ba2\u6236\u7aef\u9023\u63a5<\/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\">Timer<\/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\">Timer<\/span>()<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u6d88\u606f\u5206\u767c<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">MethodInfo<\/span> <span class=\"cm-variable\">mi<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">typeof<\/span>(<span class=\"cm-variable\">EventHandler<\/span>).<span class=\"cm-variable\">GetMethod<\/span>(<span class=\"cm-string\">\"OnTimer\"<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable-3\">object<\/span>[] <span class=\"cm-variable\">obj<\/span> <span class=\"cm-operator\">=<\/span> { };<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">mi<\/span>.<span class=\"cm-variable\">Invoke<\/span>(<span class=\"cm-atom\">null<\/span>, <span class=\"cm-variable\">obj<\/span>);<\/span><br \/><span role=\"presentation\">}<\/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\">partial<\/span> <span class=\"cm-keyword\">class<\/span> <span class=\"cm-def\">EventHandler<\/span><\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">OnTimer<\/span>()<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u5ba2\u6236\u7aef\u5fc3\u8df3\u8d85\u6642\u8655\u7406<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">CheckPing<\/span>();<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/ Ping\u6aa2\u67e5<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">CheckPing<\/span>()<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable-3\">long<\/span> <span class=\"cm-variable\">timeNow<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">NetManager<\/span>.<span class=\"cm-variable\">GetTimeStamp<\/span>();<\/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\">NetManager<\/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-keyword\">if<\/span>(<span class=\"cm-variable\">timeNow<\/span> <span class=\"cm-operator\">-<\/span> <span class=\"cm-variable\">state<\/span>.<span class=\"cm-variable\">lastPingTime<\/span> <span class=\"cm-operator\">&gt;<\/span> <span class=\"cm-variable\">NetManager<\/span>.<span class=\"cm-variable\">pingInterval<\/span> <span class=\"cm-operator\">*<\/span> <span class=\"cm-number\">4<\/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-variable\">NetManager<\/span>.<span class=\"cm-variable\">Close<\/span>(<span class=\"cm-variable\">state<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">return<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0  }<\/span><br \/><span role=\"presentation\"> \u00a0  }<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><\/ul><\/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-88c72ef elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"88c72ef\" 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-38a3915\" data-id=\"38a3915\" 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-492da8d elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"492da8d\" 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-83d423a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"83d423a\" 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-aebc6ac\" data-id=\"aebc6ac\" 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-33f8fb3 elementor-widget elementor-widget-text-editor\" data-id=\"33f8fb3\" 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\">\u6578\u64da\u5eab\u4ea4\u4e92<\/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\">\u73a9\u5bb6\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-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u5b58\u76e4\u6578\u64da<\/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\">\u4e0d\u5b58\u76e4\u6578\u64da<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u5c0dClientState\u7684\u5f15\u7528<\/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-comment\">\/\/ \u73a9\u5bb6\u6578\u64da\uff08\u5b58\u76e4 + \u4e0d\u5b58\u76e4\uff09<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">class<\/span> <span class=\"cm-def\">Player<\/span><\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u4e0d\u5b58\u76e4\u6578\u64da<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/...<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u5b58\u76e4\u6578\u64da<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable\">PlayerData<\/span> <span class=\"cm-variable\">data<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u6307\u5411\u6301\u6709\u8a72Player\u7684ClientState\uff0c\u7528\u65bc\u8b93\u5176\u4ed6Player\u901a\u904eid\u4f86\u627e\u5230\u5c0d\u61c9\u7684ClientState\u57f7\u884c\u4e00\u4e9b\u908f\u8f2f\u64cd\u4f5c<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">public<\/span> <span class=\"cm-variable\">ClientState<\/span> <span class=\"cm-variable\">state<\/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-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u6578\u64da\u5eab\uff08\u4ee5MySQL\u70ba\u4f8b\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-plain\">\u914d\u7f6e<\/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\">\u670d\u52d9\u5668\u88e1\u65b0\u5efa\u9700\u8981\u7684\u6578\u64da\u5eab<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u670d\u52d9\u7aef\u5de5\u7a0b\u589e\u52a0<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u5c0d\u6578\u64da\u5eab\u7db2\u683c\u6578\u64da\u9032\u884c\u89e3\u6790\u7684\u5de5\u5177<\/span><\/span><\/span><span class=\"md-plain\">\u5f15\u7528<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u5982MySQL\u9700\u8981\u589e\u52a0\u5c0dMysql.Data.dll\u7684\u5f15\u7528\uff08connector\uff09<\/span><\/p><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u555f\u52d5\u670d\u52d9\u5668\uff08\u5982MySQL\uff09\uff0c\u76e3\u807d\u6307\u5b9a\u7aef\u53e3<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u7528\u7b2c\u4e09\u65b9\u5eab<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u7de8\u78bc\u548c\u89e3\u78bcMySQL\u7279\u5b9a\u5f62\u5f0f\u7684\u5354\u8b70<\/span><\/span><\/span><\/p><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u4f8b\u5b50\u5de5\u5177<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">Xampp + Navicat for MySQL<\/span><\/p><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u6578\u64da\u5eab\u64cd\u4f5c\u6d41\u7a0b<\/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\">\u9023\u63a5\u670d\u52d9\u5668<\/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-comment\">\/\/\u975c\u614b\u6578\u64da\u5eab\u9023\u63a5\u5c0d\u8c61<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-variable\">MySqlConnection<\/span> <span class=\"cm-variable\">mysql<\/span>;<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u9023\u63a5\u6578\u64da\u5eab<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u6578\u64da\u5eab\u540d; ip\u5730\u5740; \u6578\u64da\u5eab\u7aef\u53e3\u865f; \u7528\u6236\u540d; \u5bc6\u78bc<\/span><\/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\">Connect<\/span>(<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">db<\/span>, <span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">ip<\/span>, <span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">port<\/span>, <span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">user<\/span>, <span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">password<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">mysql<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">MySqlConnection<\/span>();<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u7d44\u88dd\u9023\u63a5\u4fe1\u606f\u5b57\u7b26\u4e32<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">s<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable-3\">string<\/span>.<span class=\"cm-variable\">Format<\/span>(<span class=\"cm-string\">\"Database={0}; Data Source={1}; port={2}; User Id={3}; Password={4}\"<\/span>, <span class=\"cm-variable\">db<\/span>, <span class=\"cm-variable\">ip<\/span>, <span class=\"cm-variable\">port<\/span>, <span class=\"cm-variable\">user<\/span>, <span class=\"cm-variable\">password<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">mysql<\/span>.<span class=\"cm-variable\">ConnectionString<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">s<\/span>;<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u5617\u8a66\u9023\u63a5<\/span><\/span><br \/><span role=\"presentation\"> \u00a0  <span class=\"cm-variable\">mysql<\/span>.<span class=\"cm-variable\">Open<\/span>();<br \/><\/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\">\u9078\u64c7\u6578\u64da\u5eab<\/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\">\u57f7\u884cSQL\u8a9e\u53e5<\/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\">\u5275\u5efa\u6307\u4ee4<\/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-3\">string<\/span> <span class=\"cm-variable\">sql<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable-3\">string<\/span>.<span class=\"cm-variable\">Format<\/span>(<span class=\"cm-string\">\"insert into account set id ='{0}', password = '{1}';\"<\/span>, <span class=\"cm-variable\">id<\/span>, <span class=\"cm-variable\">password<\/span>);<\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">try<\/span><\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">MySqlCommand<\/span> <span class=\"cm-variable\">cmd<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">MySqlCommand<\/span>(<span class=\"cm-variable\">sql<\/span>, <span class=\"cm-variable\">mysql<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">cmd<\/span>.<span class=\"cm-variable\">ExecuteNonQuery<\/span>(); <span class=\"cm-comment\">\/\/\u57f7\u884c\u975e\u67e5\u8a62\u547d\u4ee4 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  <\/span><\/span><br \/><span role=\"presentation\">}<br \/>\/\/...<\/span><\/pre><\/li><\/ul><\/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\">\u9632\u6b62SQL\u6ce8\u5165<\/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\">SQL\u6ce8\u5165\uff1a\u901a\u904e\u8f38\u5165\u8acb\u6c42\uff0c\u628aSQL\u547d\u4ee4\u63d2\u5165\u5230SQL\u8a9e\u53e5\u4e2d\uff0c\u6b3a\u9a19\u670d\u52d9\u5668\u57f7\u884c\u60e1\u610fSQL\u547d\u4ee4<\/span><\/span><\/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-comment\">\/\/\u9632\u6b62SQL\u6ce8\u5165<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">private<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-variable-3\">bool<\/span> <span class=\"cm-def\">IsSafeString<\/span>(<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">str<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">return<\/span> <span class=\"cm-operator\">!<\/span><span class=\"cm-variable\">Regex<\/span>.<span class=\"cm-variable\">IsMatch<\/span>(<span class=\"cm-variable\">str<\/span>, <span class=\"cm-string\">@\"[-|;|,|\\\/|\\(|\\)|\\[|\\]|\\}|\\{|%|@|\\*|!|\\']\"<\/span>);<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><\/ul><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u95dc\u9589\u6578\u64da\u5eab<\/span><\/p><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u57fa\u790e\u529f\u80fd\uff08\u4ee5\u73a9\u5bb6\u6578\u64da\u70ba\u4f8b\uff09<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u6ce8\u518a<\/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-3\">string<\/span> <span class=\"cm-variable\">sql<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable-3\">string<\/span>.<span class=\"cm-variable\">Format<\/span>(<span class=\"cm-string\">\"insert into account set id ='{0}', password = '{1}';\"<\/span>, <span class=\"cm-variable\">id<\/span>, <span class=\"cm-variable\">password<\/span>);<\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">MySqlCommand<\/span> <span class=\"cm-variable\">cmd<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">MySqlCommand<\/span>(<span class=\"cm-variable\">sql<\/span>, <span class=\"cm-variable\">mysql<\/span>);<\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">cmd<\/span>.<span class=\"cm-variable\">ExecuteNonQuery<\/span>(); <span class=\"cm-comment\">\/\/\u57f7\u884c\u975e\u67e5\u8a62\u547d\u4ee4 \u00a0 \u00a0 \u00a0<\/span><\/span><\/pre><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u5275\u5efa\u89d2\u8272<\/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\">\/\/\u5e8f\u5217\u5316<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">PlayerData<\/span> <span class=\"cm-variable\">playerData<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">PlayerData<\/span>();<\/span><br \/><span role=\"presentation\"><span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">data<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">js<\/span>.<span class=\"cm-variable\">Serialize<\/span>(<span class=\"cm-variable\">playerData<\/span>);<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u5beb\u5165\u6578\u64da\u5eab<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">sql<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable-3\">string<\/span>.<span class=\"cm-variable\">Format<\/span>(<span class=\"cm-string\">\"insert into player set id='{0}', data='{1}';\"<\/span>, <span class=\"cm-variable\">id<\/span>, <span class=\"cm-variable\">data<\/span>);<\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">MySqlCommand<\/span> <span class=\"cm-variable\">cmd<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">MySqlCommand<\/span>(<span class=\"cm-variable\">sql<\/span>, <span class=\"cm-variable\">mysql<\/span>);<\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">cmd<\/span>.<span class=\"cm-variable\">ExecuteNonQuery<\/span>();<\/span><\/pre><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u5bc6\u78bc\u6821\u9a57<\/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-3\">string<\/span> <span class=\"cm-variable\">sql<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable-3\">string<\/span>.<span class=\"cm-variable\">Format<\/span>(<span class=\"cm-string\">\"select * from account where id='{0}' and password='{1}';\"<\/span>, <span class=\"cm-variable\">id<\/span>, <span class=\"cm-variable\">password<\/span>);<\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">MySqlCommand<\/span> <span class=\"cm-variable\">cmd<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">MySqlCommand<\/span>(<span class=\"cm-variable\">sql<\/span>, <span class=\"cm-variable\">mysql<\/span>);<\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">MySqlDataReader<\/span> <span class=\"cm-variable\">dataReader<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">cmd<\/span>.<span class=\"cm-variable\">ExecuteReader<\/span>();<\/span><br \/><span role=\"presentation\"><span class=\"cm-variable-3\">bool<\/span> <span class=\"cm-variable\">hasRows<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">dataReader<\/span>.<span class=\"cm-variable\">HasRows<\/span>;<\/span><\/pre><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u7372\u53d6\u6578\u64da<\/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-3\">string<\/span> <span class=\"cm-variable\">sql<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable-3\">string<\/span>.<span class=\"cm-variable\">Format<\/span>(<span class=\"cm-string\">\"select * from player where id='{0}';\"<\/span>, <span class=\"cm-variable\">id<\/span>);<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">MySqlCommand<\/span> <span class=\"cm-variable\">cmd<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">MySqlCommand<\/span>(<span class=\"cm-variable\">sql<\/span>, <span class=\"cm-variable\">mysql<\/span>);<\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">MySqlDataReader<\/span> <span class=\"cm-variable\">dataReader<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">cmd<\/span>.<span class=\"cm-variable\">ExecuteReader<\/span>();<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u7121\u6578\u64da<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">if<\/span> (<span class=\"cm-operator\">!<\/span><span class=\"cm-variable\">dataReader<\/span>.<span class=\"cm-variable\">HasRows<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">dataReader<\/span>.<span class=\"cm-variable\">Close<\/span>();<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">return<\/span> <span class=\"cm-atom\">null<\/span>;<\/span><br \/><span role=\"presentation\">}<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u8b80\u53d6\u6578\u64da<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">dataReader<\/span>.<span class=\"cm-variable\">Read<\/span>();<\/span><br \/><span role=\"presentation\"><span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">data<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">dataReader<\/span>.<span class=\"cm-variable\">GetString<\/span>(<span class=\"cm-string\">\"data\"<\/span>);<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u53cd\u5e8f\u5217\u5316<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">PlayerData<\/span> <span class=\"cm-variable\">playerData<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">js<\/span>.<span class=\"cm-variable\">Deserialize<\/span><span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">PlayerData<\/span><span class=\"cm-operator\">&gt;<\/span>(<span class=\"cm-variable\">data<\/span>);<\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">dataReader<\/span>.<span class=\"cm-variable\">Close<\/span>();<\/span><\/pre><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u66f4\u65b0\u6578\u64da<\/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\">\/\/\u5e8f\u5217\u5316<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">data<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">js<\/span>.<span class=\"cm-variable\">Serialize<\/span>(<span class=\"cm-variable\">playerData<\/span>);<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/sql<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">sql<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable-3\">string<\/span>.<span class=\"cm-variable\">Format<\/span>(<span class=\"cm-string\">\"update player set data='{0}' where id='{1}';\"<\/span>, <span class=\"cm-variable\">data<\/span>, <span class=\"cm-variable\">id<\/span>);<\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">MySqlCommand<\/span> <span class=\"cm-variable\">cmd<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">MySqlCommand<\/span>(<span class=\"cm-variable\">sql<\/span>, <span class=\"cm-variable\">mysql<\/span>);<\/span><br \/><span role=\"presentation\"><span class=\"cm-variable\">cmd<\/span>.<span class=\"cm-variable\">ExecuteNonQuery<\/span>();<\/span><\/pre><\/li><\/ul><\/li><\/ul><\/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-2491","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\/2491","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=2491"}],"version-history":[{"count":36,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/posts\/2491\/revisions"}],"predecessor-version":[{"id":2534,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/posts\/2491\/revisions\/2534"}],"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=2491"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/categories?post=2491"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/tags?post=2491"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}