{"id":2466,"date":"2022-09-28T00:40:34","date_gmt":"2022-09-27T16:40:34","guid":{"rendered":"https:\/\/lonelinerd.com\/?p=2466"},"modified":"2022-10-16T22:08:49","modified_gmt":"2022-10-16T14:08:49","slug":"u3d-net-6","status":"publish","type":"post","link":"https:\/\/lonelinerd.com\/index.php\/2022\/09\/28\/u3d-net-6\/","title":{"rendered":"\u300aUnity3D\u7db2\u7d61\u904a\u6232\u5be6\u8e10\u300b\uff08\u7b2c2\u7248\uff09\u8981\u9ede\u6458\u9304 &#8211; \u300c\u901a\u7528\u5ba2\u6236\u7aef\u7db2\u7d61\u6a21\u584a\u300d"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"2466\" class=\"elementor elementor-2466\">\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-3f4634f elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3f4634f\" 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-fc6299b\" data-id=\"fc6299b\" 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-507c7aa elementor-widget elementor-widget-text-editor\" data-id=\"507c7aa\" 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-53efa1f elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"53efa1f\" 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-292ae05\" data-id=\"292ae05\" 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-5cee65a elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"5cee65a\" 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-b637dc4 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b637dc4\" 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-9a771d7\" data-id=\"9a771d7\" 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-124106e elementor-widget elementor-widget-text-editor\" data-id=\"124106e\" 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>Client Module Code unitypackage(Google Drive):<\/strong><\/span><\/h4>\n<h4><a href=\"https:\/\/drive.google.com\/file\/d\/1C6ykannRduaaJf0LdeuehGP_ATKRzYJe\/view?usp=sharing\" target=\"_blank\" rel=\"noopener\">https:\/\/drive.google.com\/file\/d\/1C6ykannRduaaJf0LdeuehGP_ATKRzYJe\/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<div class=\"elementor-element elementor-element-e45d212 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"e45d212\" 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-f9818c0 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"f9818c0\" 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-a95e561\" data-id=\"a95e561\" 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-be66c69 elementor-widget elementor-widget-text-editor\" data-id=\"be66c69\" 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\">\u6846\u67b6\u90e8\u5206 &#8211; <span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\">NetManager \u7db2\u7d61\u7ba1\u7406\u5668<\/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\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u7db2\u7d61\u4e8b\u4ef6\u5206\u767c\u6a21\u584a<\/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\">\u7db2\u7d61\u4e8b\u4ef6<\/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\u6210\u529f\/\u5931\u6557\/\u95dc\u9589<\/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\">\u7dad\u8b77<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u4e8b\u4ef6\u76e3\u807d\u5217\u8868<\/span><\/span><\/span><span class=\"md-plain\">\uff0c\u8a18\u9304\u6bcf\u7a2e\u7db2\u7d61\u4e8b\u4ef6\u5c0d\u61c9\u7684\u56de\u8abf\u65b9\u6cd5<\/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\">\/\/\u7db2\u7d61\u4e8b\u4ef6\u76e3\u807d\u5217\u8868<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">private<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-variable\">Dictionary<\/span><span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">NetEvent<\/span>, <span class=\"cm-variable\">EventListener<\/span><span class=\"cm-operator\">&gt;<\/span> <span class=\"cm-variable\">eventListeners<\/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\">NetEvent<\/span>, <span class=\"cm-variable\">EventListener<\/span><span class=\"cm-operator\">&gt;<\/span>();<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u6dfb\u52a0\u7db2\u7d61\u4e8b\u4ef6\u76e3\u807d<\/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\">AddEventListener<\/span>(<span class=\"cm-variable\">NetEvent<\/span> <span class=\"cm-variable\">netEvent<\/span>, <span class=\"cm-variable\">EventListener<\/span> <span class=\"cm-variable\">listener<\/span>){\/\/...}<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u79fb\u9664\u7db2\u7d61\u4e8b\u4ef6\u76e3\u807d<\/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\">RemoveEventListener<\/span>(<span class=\"cm-variable\">NetEvent<\/span> <span class=\"cm-variable\">netEvent<\/span>, <span class=\"cm-variable\">EventListener<\/span> <span class=\"cm-variable\">listener<\/span>){\/\/...}<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u5206\u767c\u7db2\u7d61\u4e8b\u4ef6<\/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\">FireEvent<\/span>(<span class=\"cm-variable\">NetEvent<\/span> <span class=\"cm-variable\">netEvent<\/span>, <span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">err<\/span>){\/\/...}<\/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-36c440b elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"36c440b\" 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-63fd04c\" data-id=\"63fd04c\" 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-2ec2228 elementor-widget elementor-widget-text-editor\" data-id=\"2ec2228\" 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-html-inline md-expand\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u670d\u52d9\u5668\u9023\u63a5\u6a21\u584a<\/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\">\u4f7f\u7528<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">BeginConnect<\/span><\/span><\/span><span class=\"md-plain\">\u767c\u8d77\u9023\u63a5<\/span><\/p><\/li><li class=\"md-list-item md-focus-container\"><p class=\"md-end-block md-p md-focus\">\u8003\u616e\u767c\u8d77\u9023\u63a5\u5f8c\uff0c\u56de\u8abf\u8fd4\u56de\u524d\u518d\u6b21\u9023\u63a5\u7684\u60c5\u6cc1<\/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-variable-3\">bool<\/span> <span class=\"cm-variable\">isConnecting<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-atom\">false<\/span>;<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u9023\u63a5<\/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\">Connect<\/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><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0  \/\/...<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">isConnecting<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-atom\">true<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">socket<\/span>.<span class=\"cm-variable\">BeginConnect<\/span>(<span class=\"cm-variable\">ip<\/span>, <span class=\"cm-variable\">port<\/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-comment\">\/\/\u9023\u63a5\u56de\u8abf<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">private<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">ConnectCallback<\/span>(<span class=\"cm-variable\">IAsyncResult<\/span> <span class=\"cm-variable\">ar<\/span>)<\/span><br \/><span role=\"presentation\">{<br \/>    \/\/...<br \/><\/span>    \/\/\u7d42\u6b62\u9023\u63a5<br \/>    <span role=\"presentation\"><span class=\"cm-variable\">socket<\/span>.<span class=\"cm-variable\">EndConnect<\/span>(<span class=\"cm-variable\">ar<\/span>);<\/span><br \/>    \/\/\u5206\u767c\u9023\u63a5\u6d88\u606f<span role=\"presentation\"> \u00a0  <\/span><br \/><span role=\"presentation\"> \u00a0  <span class=\"cm-variable\">FireEvent<\/span>(<span class=\"cm-variable\">NetEvent<\/span>.<span class=\"cm-variable\">ConnectSucc<\/span>, <span class=\"cm-string\">\"\"<\/span>);<br \/><\/span><span role=\"presentation\"><span class=\"cm-variable\">    \/\/\u91cd\u7f6e\u9023\u63a5\u72c0\u614b<br \/>    isConnecting<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-atom\">false<\/span>;<br \/><\/span>    \/\/\u7e7c\u7e8c\u63a5\u6536<br \/><span role=\"presentation\"> \u00a0  <span class=\"cm-variable\">socket<\/span>.<span class=\"cm-variable\">BeginReceive<\/span>(<span class=\"cm-variable\">readBuff<\/span>.<span class=\"cm-variable\">bytes<\/span>, <span class=\"cm-variable\">readBuff<\/span>.<span class=\"cm-variable\">writeIdx<\/span>, <span class=\"cm-variable\">readBuff<\/span>.<span class=\"cm-variable\">remain<\/span>, <span class=\"cm-number\">0<\/span>, <span class=\"cm-variable\">ReceiveCallback<\/span>, <span class=\"cm-variable\">socket<\/span>);<br \/><\/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-93bbd5a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"93bbd5a\" 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-a69c5a3\" data-id=\"a69c5a3\" 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-85a5816 elementor-widget elementor-widget-text-editor\" data-id=\"85a5816\" 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-html-inline md-expand\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u6578\u64da\u50b3\u8f38\u6a21\u584a<\/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\">\u628a\u5354\u8b70\u540d\u548c\u5354\u8b70\u9ad4\u5206\u5225\u7de8\u78bc\u5f8c\u7d44\u5408\u6210\u65b0\u7684\u7de8\u78bc\u6578\u64da\u5f8c\u767c\u9001<\/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\">\/\/\u767c\u9001\u6578\u64da<\/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\">Send<\/span>(<span class=\"cm-variable\">MsgBase<\/span> <span class=\"cm-variable\">msg<\/span>)<\/span><br \/><span role=\"presentation\">{<br \/><\/span>    \/\/...<br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable-3\">byte<\/span>[] <span class=\"cm-variable\">nameBytes<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">MsgBase<\/span>.<span class=\"cm-variable\">EncodeName<\/span>(<span class=\"cm-variable\">msg<\/span>); <span class=\"cm-comment\">\/\/\u5354\u8b70\u540d\u6578\u64da\uff1a\u9577\u5ea6\u4fe1\u606f+\u5354\u8b70\u540d2\u9032\u5236\u6578\u64da<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable-3\">byte<\/span>[] <span class=\"cm-variable\">bodyBytes<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">MsgBase<\/span>.<span class=\"cm-variable\">Encode<\/span>(<span class=\"cm-variable\">msg<\/span>); <span class=\"cm-comment\">\/\/\u5354\u8b70\u9ad4\u6578\u64da\uff1a\u9577\u5ea6\u4fe1\u606f + \u5354\u8b70\u9ad42\u9032\u5236\u6578\u64da<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u6d88\u606f\u9577\u5ea6\u8a08\u7b97\u53ca\u7d44\u88dd<\/span><\/span><br \/><span role=\"presentation\"> \u00a0  \/\/...<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u5beb\u5165\u968a\u5217<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">ByteArray<\/span> <span class=\"cm-variable\">ba<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">ByteArray<\/span>(<span class=\"cm-variable\">sendBytes<\/span>);<\/span><span role=\"presentation\"> \u00a0  <\/span><br \/><span role=\"presentation\"> \u00a0  <span class=\"cm-variable\">writeQueue<\/span>.<span class=\"cm-variable\">Enqueue<\/span>(<span class=\"cm-variable\">ba<\/span>);<br \/><\/span>    \/\/...<br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u767c\u9001<\/span><\/span><br \/><span role=\"presentation\"> \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><span role=\"presentation\"> \u00a0  <\/span><br \/><span role=\"presentation\">}<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u767c\u9001\u6578\u64da\u56de\u8abf<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">static<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">SendCallback<\/span>(<span class=\"cm-variable\">IAsyncResult<\/span> <span class=\"cm-variable\">ar<\/span>)<\/span><br \/><span role=\"presentation\">{<br \/><\/span>    \/\/...<br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u7372\u53d6\u6210\u529f\u767c\u9001\u7684\u6578\u64da\u9577\u5ea6<\/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-variable\">socket<\/span>.<span class=\"cm-variable\">EndSend<\/span>(<span class=\"cm-variable\">ar<\/span>);<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u7372\u53d6\u5beb\u5165\u968a\u5217\u7684\u7b2c\u4e00\u689d\u6578\u64da<br \/><\/span><\/span>    \/\/...<br \/><span role=\"presentation\"> \u00a0  <span class=\"cm-variable\">writeQueue<\/span>.<span class=\"cm-variable\">Dequeue<\/span>();<\/span><br \/><span role=\"presentation\"> \u00a0  <span class=\"cm-variable\">ba<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">writeQueue<\/span>.<span class=\"cm-variable\">First<\/span>();<\/span><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 <br \/><\/span>    \/\/...<br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u9084\u6709\u6578\u64da\u5c31\u7e7c\u7e8c\u767c\u9001<\/span><\/span><br \/><span role=\"presentation\"> \u00a0  <span class=\"cm-variable\">socket<\/span>.<span class=\"cm-variable\">BeginSend<\/span>(<span class=\"cm-variable\">ba<\/span>.<span class=\"cm-variable\">bytes<\/span>, <span class=\"cm-variable\">ba<\/span>.<span class=\"cm-variable\">readIdx<\/span>, <span class=\"cm-variable\">ba<\/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><span role=\"presentation\"><br \/><\/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-efc779f elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"efc779f\" 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-12fe76f\" data-id=\"12fe76f\" 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-368201c elementor-widget elementor-widget-text-editor\" data-id=\"368201c\" 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-html-inline md-expand\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u6d88\u606f\u4e8b\u4ef6\u5206\u767c\u6a21\u584a<\/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\">\u8207\u7db2\u7d61\u4e8b\u4ef6\u985e\u4f3c\uff0c\u552f\u4e00\u4e0d\u540c\u7684\u662f\u4e0d\u901a\u904e\u679a\u8209\u503c\uff0c\u800c\u662f<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u901a\u904e\u5354\u8b70\u540d\u53bb\u5206\u767c\u6d88\u606f<\/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\">\u540c\u6a23\u9700\u8981\u7dad\u8b77\u4e00\u500b<\/span><span class=\"md-html-inline md-expand\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u4e8b\u4ef6\u76e3\u807d\u5217\u8868<\/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-5bad05a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"5bad05a\" 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-96c2b0f\" data-id=\"96c2b0f\" 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-443ada9 elementor-widget elementor-widget-text-editor\" data-id=\"443ada9\" 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-html-inline md-expand\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u6578\u64da\u8655\u7406\u6a21\u584a<\/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\">\u9023\u63a5\u56de\u8abf\u5f8c\u958b\u555f\u7570\u6b65\u63a5\u6536\u6578\u64da\uff1aBeginReceive<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u5728\u63a5\u6536\u56de\u8abf\u4e2d\u5c0d\u6578\u64da\u9032\u884c\u8655\u7406<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u63a5\u6536\u56de\u8abf<\/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\">\/\/\u6d88\u606f\u5217\u8868<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">static<\/span> <span class=\"cm-variable\">List<\/span><span class=\"cm-operator\">&lt;<\/span><span class=\"cm-variable\">MsgBase<\/span><span class=\"cm-operator\">&gt;<\/span> <span class=\"cm-variable\">msgList<\/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\">MsgBase<\/span><span class=\"cm-operator\">&gt;<\/span>();<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u6d88\u606f\u5217\u8868\u9577\u5ea6<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">static<\/span> <span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">msgCount<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-number\">0<\/span>;<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u6bcf\u4e00\u6b21Update\u8655\u7406\u7684\u6d88\u606f\u91cf<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">readonly<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">MAX_MESSAGE_FIRE<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-number\">10<\/span>;<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/Receive\u56de\u8abf<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">private<\/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\">ar<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \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\">ar<\/span>.<span class=\"cm-variable\">AsyncState<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0  <span class=\"cm-comment\">\/\/\u7372\u53d6\u63a5\u6536\u6578\u64da\u9577\u5ea6<\/span><\/span><br \/><span role=\"presentation\"> \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\">ar<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0  <span class=\"cm-comment\">\/\/\u6536\u5230FIN\u4fe1\u865f\uff08count == 0\uff09\uff0c\u65b7\u958b\u9023\u63a5<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0\/\/...<br \/><\/span>    \/\/\u66f4\u65b0\u5beb\u5165\u7d22\u5f15<br \/><span role=\"presentation\"> \u00a0  <span class=\"cm-variable\">readBuff<\/span>.<span class=\"cm-variable\">writeIdx<\/span> <span class=\"cm-operator\">+=<\/span> <span class=\"cm-variable\">count<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0  <span class=\"cm-comment\">\/\/\u6578\u64da\u8655\u7406<\/span><\/span><br \/><span role=\"presentation\"> \u00a0  <span class=\"cm-variable\">OnReceiveData<\/span>();<\/span><br \/><span role=\"presentation\"> \u00a0  <span class=\"cm-comment\">\/\/\u5269\u9918\u7a7a\u9593\u5373\u5c07\u4e0d\u8db3\uff0c\u9032\u884c\u6578\u64da\u79fb\u4f4d\u8207\u64f4\u5bb9<br \/><\/span><\/span>    \/\/...<br \/>    \/\/\u7e7c\u7e8c\u63a5\u6536<br \/><span role=\"presentation\"> \u00a0  <span class=\"cm-variable\">socket<\/span>.<span class=\"cm-variable\">BeginReceive<\/span>(<span class=\"cm-variable\">readBuff<\/span>.<span class=\"cm-variable\">bytes<\/span>, <span class=\"cm-variable\">readBuff<\/span>.<span class=\"cm-variable\">writeIdx<\/span>, <span class=\"cm-variable\">readBuff<\/span>.<span class=\"cm-variable\">remain<\/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 \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\">\u6578\u64da\u8655\u7406<\/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\">\u89e3\u6790\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-plain\">\u5c0d<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u7c98\u5305\u534a\u5305<\/span><\/span><\/span><span class=\"md-plain\">\u3001\u5927\u5c0f\u7aef\u554f\u984c\u9032\u884c\u8655\u7406<\/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\">\u6839\u64da\u5354\u8b70\u524d2\u500b\u5b57\u7bc0\u5224\u65b7\u662f\u5426\u6536\u5230\u4e00\u689d\u5b8c\u6574\u5354\u8b70<\/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\">\u6839\u64da\u5354\u8b70\u683c\u5f0f\u89e3\u6790\u51fa\u5354\u8b70\u5c0d\u8c61\uff0c\u6839\u64da\u5354\u8b70\u540d\u7372\u5f97\u6d88\u606f<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u628a<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u6d88\u606f\u653e\u5728\u6d88\u606f\u5217\u8868msgList\u4e2d<\/span><\/span><\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u7531<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u4e3b\u7dda\u7a0bUpdate\u8b80\u53d6\u5217\u8868\u4e26\u9032\u884c\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-plain\">\u512a\u5316\uff1a\u6bcf\u6b21Update\u8655\u7406\u591a\u689d\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-comment\">\/\/\u6578\u64da\u8655\u7406<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">private<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">OnReceiveData<\/span>()<\/span><br \/><span role=\"presentation\">{<\/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\">&lt;=<\/span> <span class=\"cm-number\">2<\/span>) { <span class=\"cm-keyword\">return<\/span>; } <span class=\"cm-comment\">\/\/\u6d88\u606f\u9577\u5ea6\u4e0d\u8db3\u89e3\u6790\u9577\u5ea6\u4fe1\u606f<\/span><\/span><br \/><span role=\"presentation\">\u200b    \/\/...<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u89e3\u6790\u5354\u8b70\u540d<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0\/\/...<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u89e3\u6790\u5354\u8b70\u9ad4<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0\/\/...<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u6aa2\u67e5\u63a5\u6536\u7de9\u6c96\u5340\u5269\u9918\u7a7a\u9593<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">readBuff<\/span>.<span class=\"cm-variable\">CheckAndMoveBytes<\/span>();<\/span><span role=\"presentation\"><br \/><span class=\"cm-comment\">    \/\/\u628a\u89e3\u6790\u51fa\u4f86\u7684\u6d88\u606f\u52a0\u5230\u6d88\u606f\u5217\u8868\u4e2d<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">lock<\/span> (<span class=\"cm-variable\">msgList<\/span>){<span class=\"cm-variable\">msgList<\/span>.<span class=\"cm-variable\">Add<\/span>(<span class=\"cm-variable\">msgBase<\/span>);}<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">msgCount<\/span><span class=\"cm-operator\">++<\/span>;<\/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 class=\"cm-variable\">OnReceiveData<\/span>();}<\/span><br \/><span role=\"presentation\">}<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/Update<\/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\">Update<\/span>(){<span class=\"cm-variable\">MsgUpdate<\/span>();}<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u66f4\u65b0\u6d88\u606f<\/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\">MsgUpdate<\/span>()<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span> (<span class=\"cm-variable\">msgCount<\/span> <span class=\"cm-operator\">==<\/span> <span class=\"cm-number\">0<\/span>) { <span class=\"cm-keyword\">return<\/span>; }<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u8655\u7406\u591a\u689d\u6d88\u606f<\/span><\/span><br \/><span role=\"presentation\"> \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\">MAX_MESSAGE_FIRE<\/span>; <span class=\"cm-variable\">i<\/span><span class=\"cm-operator\">++<\/span>)<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u5206\u767c\u6d88\u606f<\/span><\/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-6120e6d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6120e6d\" 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-3ba39d5\" data-id=\"3ba39d5\" 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-b8ac374 elementor-widget elementor-widget-text-editor\" data-id=\"b8ac374\" 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-html-inline md-expand\" 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\">\u5224\u65b7\u7576\u524d\u6642\u9593\u8207\u4e0a\u6b21\u767c\u9001ping\u6642\u9593\u7684\u9593\u9694\uff0c\u8d85\u904e\u6307\u5b9a\u6642\u9593\u5f8c\u518d\u767c\u9001\u4e00\u6b21ping<\/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\">\u5224\u65b7\u7576\u524d\u6642\u9593\u8207\u4e0a\u6b21\u6536\u5230pong\u6642\u9593\u7684\u9593\u9694\uff0c\u8d85\u904e\u6307\u5b9a\u6642\u9593\u5f8c\u65b7\u958b\u9023\u63a5<\/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\">\/\/\u5fc3\u8df3\u9593\u9694\u6642\u9593<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">pingInterval<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-number\">10<\/span>;<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u4e0a\u4e00\u6b21\u767c\u9001Ping\u7684\u6642\u9593<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">static<\/span> <span class=\"cm-variable-3\">float<\/span> <span class=\"cm-variable\">lastPingTime<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-number\">0<\/span>;<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u4e0a\u4e00\u6b21\u6536\u5230Pong\u7684\u6642\u9593<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">static<\/span> <span class=\"cm-variable-3\">float<\/span> <span class=\"cm-variable\">lastPongTime<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-number\">0<\/span>;<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u767c\u9001Ping\u5354\u8b70<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">private<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">PingUpdate<\/span>()<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/Check Ping Signal Overtime and try ping again<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">Time<\/span>.<span class=\"cm-variable\">time<\/span> <span class=\"cm-operator\">-<\/span> <span class=\"cm-variable\">lastPingTime<\/span> <span class=\"cm-operator\">&gt;<\/span> <span class=\"cm-variable\">pingInterval<\/span>){\/\/...}<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/Check Pong Signal Overtime<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">Time<\/span>.<span class=\"cm-variable\">time<\/span> <span class=\"cm-operator\">-<\/span> <span class=\"cm-variable\">lastPongTime<\/span> <span class=\"cm-operator\">&gt;<\/span> <span class=\"cm-variable\">pingInterval<\/span> <span class=\"cm-operator\">*<\/span> <span class=\"cm-number\">4<\/span>){\/\/...}<\/span><br \/><span role=\"presentation\">}<\/span><br \/><span role=\"presentation\">\u200b<\/span><br \/><span role=\"presentation\"><span class=\"cm-comment\">\/\/\u76e3\u807dPong\u5354\u8b70<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">private<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-keyword\">void<\/span> <span class=\"cm-variable\">OnMsgPong<\/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\">lastPongTime<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">Time<\/span>.<span class=\"cm-variable\">time<\/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-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">ByteArray \u7de9\u6c96\u5340\u985e<\/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\">MsgBase \u5354\u8b70\u57fa\u985e<\/span><\/span><\/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-489bc9a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"489bc9a\" 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-4224916\" data-id=\"4224916\" 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-9d6dfd3 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"9d6dfd3\" 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-d1bfe41 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"d1bfe41\" 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-8b7f478\" data-id=\"8b7f478\" 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-2751870 elementor-widget elementor-widget-text-editor\" data-id=\"2751870\" 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\">\u5354\u8b70\u90e8\u5206<\/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\">\u5ba2\u6236\u7aef\u548c\u670d\u52d9\u7aef\u901a\u4fe1\u7684\u6578\u64da\u683c\u5f0f<\/span><\/p><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u53c3\u6578\u89e3\u6790<\/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\">\u628a\u4e00\u500b\u5354\u8b70\u5c0d\u8c61\u8f49\u63db\u62102\u9032\u5236\u6578\u64da\uff08\u7de8\u78bc\uff09\uff0c\u518d\u628a2\u9032\u5236\u6578\u64da\u8f49\u63db\u6210\u5354\u8b70\u5c0d\u8c61\uff08\u89e3\u78bc\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\">Json\/ProtoBuf<\/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\">Json\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\">\u6d88\u606f\u9577\u5ea6 + \u5354\u8b70\u540d\u9577\u5ea6 + \u5354\u8b70\u540d + \u5354\u8b70\u9ad4<\/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-plain\">\u6d88\u606f\u9577\u5ea6 = \u5354\u8b70\u540d\u9577\u5ea6\u63cf\u8ff0\u5b57\u7bc0\u6578 + \u5354\u8b70\u540d\u5b57\u7bc0\u6578 + \u5354\u8b70\u9ad4\u5b57\u7bc0\u6578<\/span><\/p><\/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-24413e5 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"24413e5\" 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-8ea6071\" data-id=\"8ea6071\" 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-27a0247 elementor-widget elementor-widget-image\" data-id=\"27a0247\" 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=\"1024\" height=\"441\" src=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/09\/Ch6_1-1024x441.jpg\" class=\"attachment-large size-large wp-image-2479\" alt=\"\" srcset=\"https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/09\/Ch6_1-1024x441.jpg 1024w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/09\/Ch6_1-300x129.jpg 300w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/09\/Ch6_1-768x331.jpg 768w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/09\/Ch6_1-1536x661.jpg 1536w, https:\/\/lonelinerd.com\/wp-content\/uploads\/2022\/09\/Ch6_1-2048x881.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/>\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-977ea17 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"977ea17\" 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-d6bbfff\" data-id=\"d6bbfff\" 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-5a79162 elementor-widget elementor-widget-text-editor\" data-id=\"5a79162\" 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\"><p class=\"md-end-block md-p\"><span class=\"md-html-inline md-expand\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u5354\u8b70\u540d\u7de8\/\u89e3\u78bc<\/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\">MsgBase.EncodeName<\/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\">\/\/\u7de8\u78bc\u5354\u8b70\u540d<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-variable-3\">byte<\/span>[] <span class=\"cm-def\">EncodeName<\/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-comment\">\/\/\u5354\u8b70\u540d\u548c\u9577\u5ea6<\/span><\/span><br \/><span role=\"presentation\"> \u00a0  <span class=\"cm-variable-3\">byte<\/span>[] <span class=\"cm-variable\">nameBytes<\/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\">msgBase<\/span>.<span class=\"cm-variable\">protoName<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable-3\">Int16<\/span> <span class=\"cm-variable\">len<\/span> <span class=\"cm-operator\">=<\/span> (<span class=\"cm-variable-3\">Int16<\/span>)<span class=\"cm-variable\">nameBytes<\/span>.<span class=\"cm-variable\">Length<\/span>;<\/span><br \/><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable-3\">byte<\/span>[] <span class=\"cm-variable\">bytes<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable-3\">byte<\/span>[<span class=\"cm-number\">2<\/span> <span class=\"cm-operator\">+<\/span> <span class=\"cm-variable\">len<\/span>]; <span class=\"cm-comment\">\/\/2\u5b57\u7bc0\u7528\u65bc\u63cf\u8ff0\u5354\u8b70\u540d\u9577\u5ea6<\/span><\/span><br \/><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u5c0f\u7aef\u7d44\u88dd\u9577\u5ea6\u4fe1\u606f<\/span><\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">bytes<\/span>[<span class=\"cm-number\">0<\/span>] <span class=\"cm-operator\">=<\/span> (<span class=\"cm-variable-3\">byte<\/span>)(<span class=\"cm-variable\">len<\/span> <span class=\"cm-operator\">%<\/span> <span class=\"cm-number\">256<\/span>); \u00a0 \u00a0 \u00a0 \u00a0<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">bytes<\/span>[<span class=\"cm-number\">1<\/span>] <span class=\"cm-operator\">=<\/span> (<span class=\"cm-variable-3\">byte<\/span>)(<span class=\"cm-variable\">len<\/span> <span class=\"cm-operator\">\/<\/span> <span class=\"cm-number\">256<\/span>);<\/span><br \/><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">Array<\/span>.<span class=\"cm-variable\">Copy<\/span>(<span class=\"cm-variable\">nameBytes<\/span>, <span class=\"cm-number\">0<\/span>, <span class=\"cm-variable\">bytes<\/span>, <span class=\"cm-number\">2<\/span>, <span class=\"cm-variable\">len<\/span>);<\/span><br \/><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">bytes<\/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\">MsgBase.DecodeName<\/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\">\/\/\u89e3\u78bc\u5354\u8b70\u540d<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-variable-3\">string<\/span> <span class=\"cm-def\">DecodeName<\/span>(<span class=\"cm-variable-3\">byte<\/span>[] <span class=\"cm-variable\">bytes<\/span>, <span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">offset<\/span>, <span class=\"cm-keyword\">out<\/span> <span class=\"cm-variable-3\">int<\/span> <span class=\"cm-variable\">count<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<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\">if<\/span>(<span class=\"cm-variable\">offset<\/span> <span class=\"cm-operator\">+<\/span> <span class=\"cm-number\">2<\/span> <span class=\"cm-operator\">&gt;<\/span> <span class=\"cm-variable\">bytes<\/span>.<span class=\"cm-variable\">Length<\/span>) { <span class=\"cm-keyword\">return<\/span> <span class=\"cm-string\">\"\"<\/span>; } <span class=\"cm-comment\">\/\/\u5b57\u7bc0\u6578\u7d44\u9577\u5ea6&lt;2\uff0c\u7121\u6cd5\u89e3\u6790\u9577\u5ea6\u4fe1\u606f<\/span><\/span><br \/><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-comment\">\/\/\u5c0f\u7aef\u6a21\u5f0f\u8b80\u53d6\u9577\u5ea6\u4fe1\u606f<\/span><\/span><br \/><span role=\"presentation\"> \u00a0<span class=\"cm-variable-3\">Int16<\/span> <span class=\"cm-variable\">len<\/span> <span class=\"cm-operator\">=<\/span> (<span class=\"cm-variable-3\">Int16<\/span>)((<span class=\"cm-variable\">bytes<\/span>[<span class=\"cm-variable\">offset<\/span> <span class=\"cm-operator\">+<\/span> <span class=\"cm-number\">1<\/span>] <span class=\"cm-operator\">&lt;&lt;<\/span> <span class=\"cm-number\">8<\/span>) <span class=\"cm-operator\">|<\/span> <span class=\"cm-variable\">bytes<\/span>[<span class=\"cm-variable\">offset<\/span>]);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span> (<span class=\"cm-variable\">len<\/span> <span class=\"cm-operator\">&lt;=<\/span> <span class=\"cm-number\">0<\/span>) { <span class=\"cm-keyword\">return<\/span> <span class=\"cm-string\">\"\"<\/span>; } <span class=\"cm-comment\">\/\/\u9577\u5ea6&lt;=0<\/span><\/span><br \/><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">if<\/span>(<span class=\"cm-variable\">offset<\/span> <span class=\"cm-operator\">+<\/span> <span class=\"cm-number\">2<\/span> <span class=\"cm-operator\">+<\/span> <span class=\"cm-variable\">len<\/span> <span class=\"cm-operator\">&gt;<\/span> <span class=\"cm-variable\">bytes<\/span>.<span class=\"cm-variable\">Length<\/span>) { <span class=\"cm-keyword\">return<\/span> <span class=\"cm-string\">\"\"<\/span>; } <span class=\"cm-comment\">\/\/\u9577\u5ea6\u4e0d\u8db3<\/span><\/span><br \/><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">count<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-number\">2<\/span> <span class=\"cm-operator\">+<\/span> <span class=\"cm-variable\">len<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">name<\/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\">bytes<\/span>, <span class=\"cm-variable\">offset<\/span> <span class=\"cm-operator\">+<\/span> <span class=\"cm-number\">2<\/span>, <span class=\"cm-variable\">len<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">name<\/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-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">\u5354\u8b70\u9ad4\u7de8\/\u89e3\u78bc<\/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\">MsgBase.Encode<\/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\">\/\/\u7de8\u78bc\u5354\u8b70\u9ad4<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-variable-3\">byte<\/span>[] <span class=\"cm-def\">Encode<\/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-3\">string<\/span> <span class=\"cm-variable\">s<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">JsonUtility<\/span>.<span class=\"cm-variable\">ToJson<\/span>(<span class=\"cm-variable\">msgBase<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">return<\/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\">s<\/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\">MsgBase.Decode<\/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\">\/\/\u89e3\u78bc\u5354\u8b70\u9ad4<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-variable\">MsgBase<\/span> <span class=\"cm-def\">Decode<\/span>(<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">protoName<\/span>, <span class=\"cm-variable-3\">byte<\/span>[] <span class=\"cm-variable\">bytes<\/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\">count<\/span>)<\/span><br \/><span role=\"presentation\">{<\/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\">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\">bytes<\/span>, <span class=\"cm-variable\">offset<\/span>, <span class=\"cm-variable\">count<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">MsgBase<\/span> <span class=\"cm-variable\">msgBase<\/span> <span class=\"cm-operator\">=<\/span> (<span class=\"cm-variable\">MsgBase<\/span>)<span class=\"cm-variable\">JsonUtility<\/span>.<span class=\"cm-variable\">FromJson<\/span>(<span class=\"cm-variable\">s<\/span>, <span class=\"cm-variable\">Type<\/span>.<span class=\"cm-variable\">GetType<\/span>(<span class=\"cm-variable\">protoName<\/span>));<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">msgBase<\/span>;<\/span><br \/><span role=\"presentation\">}<\/span><\/pre><\/li><\/ul><\/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\">ProtoBuf\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-plain\">Google\u767c\u5e03\u7684\u4e00\u5957\u5354\u8b70\u683c\u5f0f\uff0c\u898f\u5b9a\u4e86\u4e00\u7cfb\u5217\u7684\u7de8\u89e3\u78bc\u65b9\u6cd5<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u7de8\u78bc\u5f8c\u7684\u6578\u64da\u91cf\u8f03\u5c0f<\/span><\/p><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u7372\u53d6<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">protobuf-net.dll<\/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\">\u7de8\u5bebproto\u6587\u4ef6<\/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\">message<\/span> <span class=\"cm-variable\">MsgMove<\/span>{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">optional<\/span> <span class=\"cm-variable\">int32<\/span> <span class=\"cm-variable\">x<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-number\">1<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">optional<\/span> <span class=\"cm-variable\">int32<\/span> <span class=\"cm-variable\">y<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-number\">2<\/span>;<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-variable\">optional<\/span> <span class=\"cm-variable\">int32<\/span> <span class=\"cm-variable\">z<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-number\">3<\/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\">\u4f7f\u7528<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">protogen<\/span><\/span><\/span><span class=\"md-plain\">\uff0c\u6839\u64daproto\u6587\u4ef6\u751f\u6210\u5c0d\u61c9\u7684\u5354\u8b70\u985e<\/span><\/p><ul class=\"ul-list\" data-mark=\"-\"><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">\u5354\u8b70\u57fa\u985e\u70ba<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">global::ProtoBuf.IExtensible<\/span><\/span><\/span><\/p><\/li><\/ul><\/li><li class=\"md-list-item\"><p class=\"md-end-block md-p\"><span class=\"md-plain\">Encode\u63a5\u53e3\u6539\u70ba\u63a5\u53d7<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">ProtoBuf.IExtensible<\/span><\/span><\/span><span class=\"md-plain\">\u53c3\u6578\uff0c\u4f7f\u7528<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">ProtoBuf.Serializer.Serialize\u5c07\u5354\u8b70\u5c0d\u8c61\u8f49\u70ba\u5b57\u7bc0\u6d41<\/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\">\/\/\u4f7f\u7528pb\u7de8\u78bc<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-variable-3\">byte<\/span>[] <span class=\"cm-def\">ProtobufEncode<\/span>(<span class=\"cm-variable\">ProtoBuf<\/span>.<span class=\"cm-variable\">IExtensible<\/span> <span class=\"cm-variable\">msgBase<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">using<\/span>(<span class=\"cm-variable\">MemoryStream<\/span> <span class=\"cm-variable\">ms<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">MemoryStream<\/span>())<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">ProtoBuf<\/span>.<span class=\"cm-variable\">Serializer<\/span>.<span class=\"cm-variable\">Serialize<\/span>(<span class=\"cm-variable\">ms<\/span>, <span class=\"cm-variable\">msgBase<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">return<\/span> <span class=\"cm-variable\">ms<\/span>.<span class=\"cm-variable\">ToArray<\/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\">Decode\u63a5\u53e3\u6539\u70ba\u63a5\u53d7\u5354\u8b70\u540d\u3001\u89e3\u78bc\u5c0d\u8c61byte\u6578\u7d44\u3001\u8d77\u59cb\u4f4d\u7f6e\u548c\u9577\u5ea6\u53c3\u6578\uff0c\u4f7f\u7528<\/span><span class=\"md-html-inline\" spellcheck=\"false\"><span style=\"color: red;\"><span class=\"md-plain\">ProtoBuf.Serializer.NonGeneric.Deserialize\u5c07\u5b57\u7bc0\u6d41\u8f49\u70ba\u57fa\u65bcProtoBuf.IExtensible\u57fa\u985e\u7684\u5c0d\u8c61\u8fd4\u56de<\/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\">\/\/\u4f7f\u7528pb\u89e3\u78bc<\/span><\/span><br \/><span role=\"presentation\"><span class=\"cm-keyword\">public<\/span> <span class=\"cm-keyword\">static<\/span> <span class=\"cm-variable\">ProtoBuf<\/span>.<span class=\"cm-variable\">IExtensible<\/span> <span class=\"cm-def\">ProtobufDecode<\/span>(<span class=\"cm-variable-3\">string<\/span> <span class=\"cm-variable\">protoName<\/span>, <span class=\"cm-variable-3\">byte<\/span>[] <span class=\"cm-variable\">bytes<\/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\">count<\/span>)<\/span><br \/><span role=\"presentation\">{<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0<span class=\"cm-keyword\">using<\/span> (<span class=\"cm-variable\">MemoryStream<\/span> <span class=\"cm-variable\">ms<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-keyword\">new<\/span> <span class=\"cm-variable\">MemoryStream<\/span>(<span class=\"cm-variable\">bytes<\/span>, <span class=\"cm-variable\">offset<\/span>, <span class=\"cm-variable\">count<\/span>))<\/span><br \/><span role=\"presentation\"> \u00a0  {<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-variable\">System<\/span>.<span class=\"cm-variable\">Type<\/span> <span class=\"cm-variable\">t<\/span> <span class=\"cm-operator\">=<\/span> <span class=\"cm-variable\">System<\/span>.<span class=\"cm-variable\">Type<\/span>.<span class=\"cm-variable\">GetType<\/span>(<span class=\"cm-variable\">protoName<\/span>);<\/span><br \/><span role=\"presentation\"> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"cm-keyword\">return<\/span> (<span class=\"cm-variable\">ProtoBuf<\/span>.<span class=\"cm-variable\">IExtensible<\/span>)<span class=\"cm-variable\">ProtoBuf<\/span>.<span class=\"cm-variable\">Serializer<\/span>.<span class=\"cm-variable\">NonGeneric<\/span>.<span class=\"cm-variable\">Deserialize<\/span>(<span class=\"cm-variable\">t<\/span>, <span class=\"cm-variable\">ms<\/span>);<\/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\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-2466","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\/2466","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=2466"}],"version-history":[{"count":24,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/posts\/2466\/revisions"}],"predecessor-version":[{"id":2496,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/posts\/2466\/revisions\/2496"}],"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=2466"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/categories?post=2466"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lonelinerd.com\/index.php\/wp-json\/wp\/v2\/tags?post=2466"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}