From cc739865dd99326cbc58e2454c13c3a2b086cef1 Mon Sep 17 00:00:00 2001 From: sin365 <353374337@qq.com> Date: Thu, 15 Jun 2023 15:45:58 +0800 Subject: [PATCH] =?UTF-8?q?TCP=E6=89=93=E6=B4=9E=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=EF=BC=8C=E5=8F=8A=E5=AE=9E=E7=8E=B0=E5=AF=B9=E8=BF=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/HaoYueTunnel/DesignTimeBuild/.dtbcache.v2 | Bin 124668 -> 132507 bytes ...0a4428b4-ee9a-43ba-8191-f076b1e55819.vsidx | Bin 51657 -> 0 bytes ...0bb77ab0-dd88-4efe-9fca-4316002cece6.vsidx | Bin 48123 -> 0 bytes ...442de58a-c9d4-4609-9d0d-66c6235e3430.vsidx | Bin 0 -> 85510 bytes ...4a56e640-2dbd-4fe3-9539-17f589dd9d88.vsidx | Bin 0 -> 86821 bytes ...51c343b2-77d6-48c8-821e-55e1845b6807.vsidx | Bin 0 -> 90408 bytes ...74ef9a83-47c0-4c94-bc53-97852d1c488c.vsidx | Bin 52392 -> 0 bytes ...810b85e7-530a-466e-a571-647e20d64794.vsidx | Bin 54888 -> 0 bytes ...8724dabf-7aa7-42a1-8f9f-bd24ede189e3.vsidx | Bin 0 -> 84380 bytes ...8cf87acb-c50f-48bf-a078-36be13ef7520.vsidx | Bin 55606 -> 0 bytes ...9c2e2e29-2b04-42ee-9948-aed7f262407b.vsidx | Bin 50737 -> 0 bytes ...dd414659-cf95-4718-99e0-2a9630f40bb8.vsidx | Bin 52327 -> 0 bytes ...f206be68-8809-4859-a92e-8deb5f741e0d.vsidx | Bin 62804 -> 0 bytes .vs/HaoYueTunnel/v17/.futdcache.v2 | Bin 890 -> 1448 bytes .vs/HaoYueTunnel/v17/.suo | Bin 116736 -> 112640 bytes .../haoyuetunnel.metadata.v5.2 | Bin 176737 -> 189973 bytes .../haoyuetunnel.projects.v5.2 | Bin 1378354 -> 2247461 bytes Client-Cli/Program.cs | 57 ++++- ClientCore/App.cs | 16 +- ClientCore/Data/UserData.cs | 15 ++ ClientCore/Enum/CommEnum.cs | 16 ++ ClientCore/Event/EEvent.cs | 8 + ClientCore/Manager/AppChat.cs | 2 +- ClientCore/Manager/AppLogin.cs | 16 +- ClientCore/Manager/ClientManager.cs | 208 ++++++++++++++++++ ClientCore/Manager/P2PChat.cs | 23 ++ ClientCore/Manager/P2PTcp.cs | 61 +++++ ClientCore/Manager/UserMgr.cs | 42 +++- ClientCore/Network/NetworkHelper.cs | 13 +- NetLib/HaoYueNet.ClientNetwork.dll | Bin 16384 -> 17408 bytes Protobuf/ProtobufAuth.cs | 121 ++++++++-- Protobuf/ProtobufTcpTunnel.cs | 186 +++++++++++++++- ProtobufCore/out/ProtobufAuth.cs | 121 ++++++++-- ProtobufCore/out/ProtobufTcpTunnel.cs | 186 +++++++++++++++- ProtobufCore/proto/protobuf_Auth.proto | 4 + ProtobufCore/proto/protobuf_TcpTunnel.proto | 10 + Server/Program.cs | 4 + ServerCore/Common/Enum/CommEnum.cs | 14 ++ ServerCore/Event/EEvent.cs | 6 +- ServerCore/Manager/ClientManager.cs | 89 ++++---- ServerCore/Manager/LoginManager.cs | 4 +- ServerCore/Manager/ServerManager.cs | 9 +- ServerCore/Manager/TcpTunnelClientManager.cs | 45 +++- .../{P2PUserManager.cs => UserManager.cs} | 6 +- ServerCore/NetWork/IOCPNetWork.cs | 45 ++-- ServerCore/NetWork/NetMsg.cs | 21 +- 46 files changed, 1201 insertions(+), 147 deletions(-) delete mode 100644 .vs/HaoYueTunnel/FileContentIndex/0a4428b4-ee9a-43ba-8191-f076b1e55819.vsidx delete mode 100644 .vs/HaoYueTunnel/FileContentIndex/0bb77ab0-dd88-4efe-9fca-4316002cece6.vsidx create mode 100644 .vs/HaoYueTunnel/FileContentIndex/442de58a-c9d4-4609-9d0d-66c6235e3430.vsidx create mode 100644 .vs/HaoYueTunnel/FileContentIndex/4a56e640-2dbd-4fe3-9539-17f589dd9d88.vsidx create mode 100644 .vs/HaoYueTunnel/FileContentIndex/51c343b2-77d6-48c8-821e-55e1845b6807.vsidx delete mode 100644 .vs/HaoYueTunnel/FileContentIndex/74ef9a83-47c0-4c94-bc53-97852d1c488c.vsidx delete mode 100644 .vs/HaoYueTunnel/FileContentIndex/810b85e7-530a-466e-a571-647e20d64794.vsidx create mode 100644 .vs/HaoYueTunnel/FileContentIndex/8724dabf-7aa7-42a1-8f9f-bd24ede189e3.vsidx delete mode 100644 .vs/HaoYueTunnel/FileContentIndex/8cf87acb-c50f-48bf-a078-36be13ef7520.vsidx delete mode 100644 .vs/HaoYueTunnel/FileContentIndex/9c2e2e29-2b04-42ee-9948-aed7f262407b.vsidx delete mode 100644 .vs/HaoYueTunnel/FileContentIndex/dd414659-cf95-4718-99e0-2a9630f40bb8.vsidx delete mode 100644 .vs/HaoYueTunnel/FileContentIndex/f206be68-8809-4859-a92e-8deb5f741e0d.vsidx create mode 100644 ClientCore/Data/UserData.cs create mode 100644 ClientCore/Enum/CommEnum.cs create mode 100644 ClientCore/Manager/ClientManager.cs create mode 100644 ClientCore/Manager/P2PChat.cs create mode 100644 ClientCore/Manager/P2PTcp.cs create mode 100644 ServerCore/Common/Enum/CommEnum.cs rename ServerCore/Manager/{P2PUserManager.cs => UserManager.cs} (97%) diff --git a/.vs/HaoYueTunnel/DesignTimeBuild/.dtbcache.v2 b/.vs/HaoYueTunnel/DesignTimeBuild/.dtbcache.v2 index 701d70fa8858535995706337765233bcbfca6995..1a456168d1ed225e4f609d548e0a4912c98395b2 100644 GIT binary patch literal 132507 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 literal 0 HcmV?d00001 diff --git a/.vs/HaoYueTunnel/FileContentIndex/4a56e640-2dbd-4fe3-9539-17f589dd9d88.vsidx b/.vs/HaoYueTunnel/FileContentIndex/4a56e640-2dbd-4fe3-9539-17f589dd9d88.vsidx new file mode 100644 index 0000000000000000000000000000000000000000..346be333d9b5ce8066bc2d1c46431cedbe340757 GIT binary patch literal 86821 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 F{{wCW(P01p literal 0 HcmV?d00001 diff --git a/.vs/HaoYueTunnel/FileContentIndex/51c343b2-77d6-48c8-821e-55e1845b6807.vsidx b/.vs/HaoYueTunnel/FileContentIndex/51c343b2-77d6-48c8-821e-55e1845b6807.vsidx new file mode 100644 index 0000000000000000000000000000000000000000..78910784fcc698e076792767086121d75fb0a957 GIT binary patch literal 90408 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 Ut(eg9>oJ-5)+UK}Ka%+W0IXbj%>V!Z literal 0 HcmV?d00001 diff --git a/.vs/HaoYueTunnel/FileContentIndex/74ef9a83-47c0-4c94-bc53-97852d1c488c.vsidx b/.vs/HaoYueTunnel/FileContentIndex/74ef9a83-47c0-4c94-bc53-97852d1c488c.vsidx deleted file mode 100644 index 286130e652d3da421ef36350e8f7336139a69147..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52392 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 diff --git a/.vs/HaoYueTunnel/FileContentIndex/810b85e7-530a-466e-a571-647e20d64794.vsidx b/.vs/HaoYueTunnel/FileContentIndex/810b85e7-530a-466e-a571-647e20d64794.vsidx deleted file mode 100644 index 08e7240294097c272ec430946ba381f5eaa73ca4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54888 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 z z{esReJaXulQT!Jxv*)kAv2~ZyXFhwcKqy@+Jrrz@8#=On!~NhPm+gm_u8Xd-u8>|g zo0W@-3l#Zl9Bn_7^#kL2+ckyDaoQO>eWmB7#D_+ZS$~1EE=U)t2Qs}o6$X7Yw<_PAB!0IyH;0=I9&pzG5TGt&)^nhPul_G8=DPQGztWAUpUL`2_qy+2y|nKm zif+l{aipvJE`7d-43{s+@fEntE((qgpdaW5nqE_dG<(}Q30+FpYP0w<$KpV{mcqV8s2#gU$LXi88`q?rXdU=!>^~TDnW=OQzfJa^%xT+t29_;=1X#toqRFp{|RbZ%8uoqf%d)Ljkte zGRdUW1XE0Dm0r`=rc!=vqu7MCVeuqhQ0b7 zFxRlircf8{r^CMl;*GJ>7hXrvhS_4FJ~vpup-ZEK**cegC(+KjnYLe5zl$<-k3Cwq zpKdw?xU;VFwoZ#M=+g8`%mI>iov?kDuwIOv9;I|?dZAY5c-Nu4Cn6iF$2%A<$4*~R z-4pd=LbtBYd+MRQx*yDLq3wkG?D-mA1d=7ba8Tu^s zSgZ|tFxRuM1LQFqX@2)|g6;zFyXI}BD~`fvy;J+4$k~mfFZ`iX)orB<*SEp!(R=lZ z>v2sF8M^It4t?D`1l7-Eeev|2te2@Y!#!^v zGYRb5`{SH*&#!y#x#ztltd{JR);_ae@c4~K;y4pC)_t8lqo11g=o{DDEZ9XbXE1-M zgeA!~lFQlw!1MMKwLfNE88?tAhwf;SRVVRN;dqP=uMeQ7*5uwarQ+J63sc#W=01Z| z4h&jT_)|bJEOLzMaO(6Pz^--*Wr0Z8@97$7jlhn* z)W^P}B^4*UualgC)oijsvb!)%rlk%rGxws|5fm>`!0{gTCXI3?E|cUQoX(yUpNC6{9C9#lL|$^iPo113CX#mJ6lY*BjYxU~aP4%`$g z4hOLLkO5%YdV@fbNC-ot=wqN5oXLR5%QdZ$Iw!6He>toHk+mfgn!;UX%Y=nL_+Ovm zt+6}kyA5Qc?CXK6RXw-lRLZ`%UO;(J%Y}n!`w2rPXeX$tsv7PnGxKqR3$6=kc*WOQ zwRv_KASWG8Dc^#FTov3=t(U~Va)z>ueqTmT0ENHZIVB<$p?l9}ah0OU?SnkP?Qn9}SXZ0g7 zk?tS^pc`G$Qti998q;pcBRp~70-S!Tsa`gzrX;xV;{H$@rVuBrb}f@AVrPNQD3Ej? z3<+qU7#?6(J?j5uEDmaI#S@s#WV)oWqN;$>^w_ z|ABxmI!Z9&w#=&gUt9wMUTUhCsl2Xx!R#UY<;bF2TT&3ST!pc?x9v)iV;fwu=wH zGa!#jNZyH+?OpU@%N<%5HV?z{Y!fPV@EsWY@Z#~V4m8S{`?8G>qR;3JLXM&iXTURD zFG_qU`_|3qvn_<@iy1UNeu)IGH(|L_#mBHaWl4{~ZBDq7A#k7UBC4ONVks}dkfM_Z!v03q5ZV8EG?QY>PuFQB6-#RtgV=>Ylf!|47q}25BB|`1M63# zeQu-~T)t6`1Ps@uwE-F`$u$=nC6NQoJ7RDFiRY+EZ7G_e6t46ad7gor3yd14>x*1a zLq0hs6Y9X?ly{~&-_F7H%4pQ9^fJjiq^w7b9fU=6);o~bJaxJpz;oU`LH;kg^`70E zNX3ZKnr@b30yOuaV{-pPDTmoq#hdnhPW}ac58C(^+I{F?<8neq3$~#iF8NiVR1@0LAw{Q@L{GCBXnVAslzyoqn{*+-BX~6VR57rA!ZQ1=>s4 zaPc2IS0=7?A?zjT7F6A}|3M&Dkb~As4Q1uT^DP5N_ya9h z1;uB{od=p~PyB;`9N_1Jbl*^_L>GYAI)p#PddwQR**HeG;>+Om1-K6ZF_;_qtt51mGjMfLK|b%~pD^LN zH)*M>d;!*a>#I!1m6RYdd9$`DAoB8aZz<{oDlT~me@Z0Wg)R?)gjf9lBk3xt)0R6~ z0{NyF^6KEQHR4DUC@+|}#h3wVykP;!!K~-t(1zw%hQ*Iq+?!X0bvgBR>@iU;Z~#5C zxjk^R8#^1aE3PeZb7}zMx)a#-F-j}cuF+e#2VkVsL@U~$HRoa2M3L)=1W~y+SnktR zK!M%+Q^u6YYpxecyZNxAV@Mzxa;!fjU>t9R{Ak1P>s$K`2HL;(-^}m(Z|C>7-{klI Dn~4sS diff --git a/.vs/HaoYueTunnel/FileContentIndex/8724dabf-7aa7-42a1-8f9f-bd24ede189e3.vsidx b/.vs/HaoYueTunnel/FileContentIndex/8724dabf-7aa7-42a1-8f9f-bd24ede189e3.vsidx new file mode 100644 index 0000000000000000000000000000000000000000..0a7e5460781eb8e74d01e041004be10612aa5f26 GIT binary patch literal 84380 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 literal 0 HcmV?d00001 diff --git a/.vs/HaoYueTunnel/FileContentIndex/8cf87acb-c50f-48bf-a078-36be13ef7520.vsidx b/.vs/HaoYueTunnel/FileContentIndex/8cf87acb-c50f-48bf-a078-36be13ef7520.vsidx deleted file mode 100644 index ec7466d75bacd46ddbd2df7700e0a1fe6a5b9213..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55606 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 LfB*D{_5c3^i;I2X diff --git a/.vs/HaoYueTunnel/FileContentIndex/9c2e2e29-2b04-42ee-9948-aed7f262407b.vsidx b/.vs/HaoYueTunnel/FileContentIndex/9c2e2e29-2b04-42ee-9948-aed7f262407b.vsidx deleted file mode 100644 index c1e57ae2b658f55de4e093dd581b64c10902485e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50737 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 diff --git a/.vs/HaoYueTunnel/FileContentIndex/dd414659-cf95-4718-99e0-2a9630f40bb8.vsidx b/.vs/HaoYueTunnel/FileContentIndex/dd414659-cf95-4718-99e0-2a9630f40bb8.vsidx deleted file mode 100644 index febfcc5f83999987c01fcbd7e757ac1e29d7ccc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52327 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 diff --git a/.vs/HaoYueTunnel/FileContentIndex/f206be68-8809-4859-a92e-8deb5f741e0d.vsidx b/.vs/HaoYueTunnel/FileContentIndex/f206be68-8809-4859-a92e-8deb5f741e0d.vsidx deleted file mode 100644 index 0be093122207cc72bb5af0705cc8cd7a3827d159..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62804 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 msZnCqd9}L1PgB delta 116 zcmZ3%{fmu}Vr#*n0GLiLq5uE@ diff --git a/.vs/HaoYueTunnel/v17/.suo b/.vs/HaoYueTunnel/v17/.suo index 5bf54d5e216cef9cae4578dbb1d5845e48ddb6a0..889b95ab966cc504e8b8e6ac13b1a08160d7015e 100644 GIT binary patch literal 112640 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 b=qs=HvcMIO&KFvo@W>Ktt@F2I&0qfyyul51 literal 116736 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 d&6S@q_AdL?mtXGv_BrpjU3>SSiN)`2_8 zY9meD1TEi*9lP-(rN!oU6yt}Xt3pY6#Ld!7LZdh4JCrGI0aTrUD(L$zKIV;EPMfMM zJN=<(G&~#)c89tz3I71{9kEM~muWw)dCVExcRV0|2zZsb0l4If1>dw8KjP;*XbStz zGep9MGgkRlhPV~-RlKf3S#ZUkJ?R&>0a~1d*1w-GZU;0o0XbtQ-uH@~fMzA3(GUG} zhl_73(Q$}<_)!7v!X8S-?SWr9!|>9bF1~cuc+SnKM%LwbL2X*?;9#&jdN;oM>LdOA zk%6w2;l9D}5Wsr?=ElL6p~!HgZgY>x+zqC;@v`v1a95-Hz=C^$WyLYcY26YX4)=p` z9~c?Up@Gn*@K6^l)?X4D4$kY2?y=(S(eP07CTaM7!2UJi;jcu7zTAb+=IAD%dx2K4 ze>F{YC`TUvU5@aVIF!kKAQvchuHHv5ys>vUGSnRz=;_@w0jJ zHiY{0(g(*cwK9JU=2>QHc-vJ*IR(x;{LEzol^{M-0+B5_f8wgM|I3#<52GOBXqyi z?ns`S7gSINzw02kc-k~5#oRWX-Dg~}qc^@YPLETMkzZlOWR*juSUd}Qu1ULj<1)$= z&jDO)0dw5Q{;vV9_u{8q@iM>`3z(Wgg)3eGXu96k zJ=nH+U?AKF6R(2dPuMrn*MNEwXnR8o1YZZVRNKzZBp-i01Ht?Qz_Mh7ojP%U1UlJt z(?v)11T?emWoVcr{-hRT=mz*~XcTXNUSc{P5XX{gUdCYv%Ze-CsZF{9;xj(n%-4MlPJxt&JtGUUav#Xr9+}pOQhFRhOmKNoD2>xsiy+6!}uZX(|Dh^*OQMN zZgopL-JZY~d=x^$3C&Bi=Dm$%83D^v%H@qy4~ypMWLJ#*(=t%E1z?nDcaN?lyO;!8*Re0y8SD=Y z^!9|K!-YT_In+#L4&CQ7@xg2Dlubo$uFb)9vr44#$qpRZrF&2#ld)jFTu>tOkV(aE zec6{%HEWPPiE?izd1#8NgJQi{o!*zN#q*%VtuFpb#ud~@z*K0JcmMa2I^qw2Qs|c> zUuqQ7lyTDne{CJIS_V+R0hACwxQ_CvT-R9AdDS;iGWI=CfwdiK`?|5D0KeHv0dXcc ztCIVas$J}EBO6UeOLovSbE8gvs*N(J@_z-wX+x{cfI9tR(3%dnlg(pZ31)(;9}gxs zUjzZhPjltg=k4SbvjFM`gp_o0We54G%B`Ld67lfG9q8QI*uH#3n7K2z&yRN?2Xox| zDRCOUe?4M47iRQjSevnRQn8o^P+x?Vr9|%L1J-w81&alsTgS)rkxtagLY4VKen;kV z5yY07Vga!@spgsUQ9VoIiI;?^26MW;BB)IsIS&=RRDsEAkRUCK&ny+4&(0$!on=Xk zs^df~Jhc3@EM>mN!b;Y)V$~`W>N1?ho(oVCbr!@eJ4hZJ^>8nKEK6t1dvQau{+)d7 z1(?>2mPWC(VXWoJoUSHlvB_umqJ@j9R!CxgU2Wa$s)pK?Abbs>;ZT=6#pM?q;j1Lr zIIy|DOP;Ut3&67h`V;3mPJJBhKv%nC{z=o)2=n#w%hy2-vt!c;`h1WnHQO{SCv*b*PM-Wv1J-L6VF|_ybVjL z)eWM^s&tI2?WRor7#XWuO|d6tR*x2S(UpxE+wUz%kw0npz4iDFtB&{a7xz*y_GIe3 z(ZC(#GYkh`x`!t57kemI{num7`G%b%yU1Kj=Zy(*F!p(yL@^kiH@@IV9BG;#+oPpm-K$ delta 491 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 delta 52 zcmZ2Ft&?%ngph_7#ula)<`$L~))uxF_7;v7&K9l~?iQXF-WI+V{uY52!4{zw;TDlC HqDCA5&&?14 diff --git a/Client-Cli/Program.cs b/Client-Cli/Program.cs index d987a77..750bca0 100644 --- a/Client-Cli/Program.cs +++ b/Client-Cli/Program.cs @@ -1,12 +1,14 @@ using ClientCore; +using ClientCore.Data; using ClientCore.Event; -App.Init("127.0.0.1", 23846); +App.Init("127.0.0.1", 23846, 23847); //注册事件 +EventSystem.Instance.RegisterEvent(EEvent.UserLogin, OnUserLogin); +EventSystem.Instance.RegisterEvent(EEvent.TcpTunnelHelloResp, OnTcpTunnelHelloResp); EventSystem.Instance.RegisterEvent(EEvent.UserJoin, OnUserJoin); EventSystem.Instance.RegisterEvent(EEvent.UserLeave, OnUserLeave); - EventSystem.Instance.RegisterEvent(EEvent.OnChatMsg, OnChatMsg); while (true) @@ -17,6 +19,15 @@ while (true) string[] CmdArr = CommandStr.Split(' '); switch (Command) { + case "info": + { + Console.WriteLine($"IsLogin:{App.userMgr.bLogin}"); + if (App.userMgr.bLogin) + { + Console.WriteLine($"UID:{App.userMgr.MainPlayer.UID} NickName:{App.userMgr.MainPlayer.NickName}"); + } + } + break; case "login": case "l": if (CmdArr.Length < 2) @@ -26,6 +37,18 @@ while (true) } App.login.Login(CmdArr[1]); break; + case "tcphey": + case "they": + App.p2ptcp.SendHellToSev(); + break; + case "tu": + if (CmdArr.Length < 2) + { + Console.WriteLine("缺省用户名"); + return; + } + App.p2ptcp.SendDoTunnel(Convert.ToInt64(CmdArr[1])); + break; case "say": if (CmdArr.Length < 2) { @@ -34,22 +57,46 @@ while (true) } App.chat.SendChatMsg(CmdArr[1]); break; + case "ulist": + { + UserInfo[] ulist = App.userMgr.GetUserInfo(); + Console.WriteLine("User总数"+ ulist.Length); + for (int i = 0; i < ulist.Length; i++) + { + Console.WriteLine($"[{i}] UID->{ulist[i].UID} | NickName->{ulist[i].NickName} | State->{ulist[i].State}"); + } + } + break; default: Console.WriteLine("未知命令" + CommandStr); break; } } -void OnChatMsg(string str1, string str2) +void OnUserLogin() { - Console.WriteLine($"[Chat]{str1}:{str2}"); + Console.WriteLine($"[User]登录成功"); + App.userMgr.Send_GetUserList(); + + App.clientMgr.ConnectTcpTunnelServer(); +} + +void OnTcpTunnelHelloResp() +{ + Console.WriteLine($"[TcpTunnel]TcpTunnelHelloResp"); } void OnUserJoin(long UID) { Console.WriteLine($"[User]用户{UID}上线"); } + void OnUserLeave(long UID) { Console.WriteLine($"[User]用户{UID}下线"); -} \ No newline at end of file +} + +void OnChatMsg(string str1, string str2) +{ + Console.WriteLine($"[Chat]{str1}:{str2}"); +} diff --git a/ClientCore/App.cs b/ClientCore/App.cs index f6779b0..228da01 100644 --- a/ClientCore/App.cs +++ b/ClientCore/App.cs @@ -15,19 +15,27 @@ namespace ClientCore public static string IP; public static int Port; public static LogManager log; - public static NetworkHelper networkHelper; + public static ClientManager clientMgr; + public static P2PTcp p2ptcp; + public static NetworkHelper networkMain; + public static NetworkHelper networkTcp2S; public static AppLogin login; public static AppChat chat; public static UserMgr userMgr; - public static void Init(string IP, int port) + public static void Init(string IP, int port, int tcptunnelport) { log = new LogManager(); - networkHelper = new NetworkHelper(); login = new AppLogin(); chat = new AppChat(); userMgr = new UserMgr(); - networkHelper.Init(IP, port); + clientMgr = new ClientManager(); + clientMgr.SetIpData(IP, port, tcptunnelport); + p2ptcp = new P2PTcp(); + networkMain = new NetworkHelper(Enum.ServerType.MainServer); + networkMain.Init(IP, port); + //networkTcp2S = new NetworkHelper(Enum.ServerType.TcpTunnelServer); + //networkTcp2S.Init(IP, tcptunnelport); } } diff --git a/ClientCore/Data/UserData.cs b/ClientCore/Data/UserData.cs new file mode 100644 index 0000000..dadbc36 --- /dev/null +++ b/ClientCore/Data/UserData.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ClientCore.Data +{ + public class UserInfo + { + public long UID;//用户ID + public string NickName;//昵称 + public int State;//状态 + } +} diff --git a/ClientCore/Enum/CommEnum.cs b/ClientCore/Enum/CommEnum.cs new file mode 100644 index 0000000..1964474 --- /dev/null +++ b/ClientCore/Enum/CommEnum.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ClientCore.Enum +{ + public enum ServerType + { + MainServer, + TcpTunnelServer, + + TcpP2PTarget + } +} diff --git a/ClientCore/Event/EEvent.cs b/ClientCore/Event/EEvent.cs index b0969be..7c52d8a 100644 --- a/ClientCore/Event/EEvent.cs +++ b/ClientCore/Event/EEvent.cs @@ -9,8 +9,16 @@ namespace ClientCore.Event public enum EEvent { // 添加你自己需要的事件类型 + UserLogin, UserJoin, UserLeave, OnChatMsg, + + //打洞流程 + TcpTunnelHelloResp, + + //连接管理 + OnSocketConnect, + OnSocketDisconnect, } } diff --git a/ClientCore/Manager/AppChat.cs b/ClientCore/Manager/AppChat.cs index 0e0bdb9..dcca67f 100644 --- a/ClientCore/Manager/AppChat.cs +++ b/ClientCore/Manager/AppChat.cs @@ -18,7 +18,7 @@ namespace ClientCore.Manager { ChatMsg = ChatMsg, }; - App.networkHelper.SendToServer((int)CommandID.CmdChatmsg, ProtoBufHelper.Serizlize(msg)); + App.networkMain.SendToServer((int)CommandID.CmdChatmsg, ProtoBufHelper.Serizlize(msg)); } public void RecvChatMsg(byte[] reqData) diff --git a/ClientCore/Manager/AppLogin.cs b/ClientCore/Manager/AppLogin.cs index aa34bd8..96b0dbc 100644 --- a/ClientCore/Manager/AppLogin.cs +++ b/ClientCore/Manager/AppLogin.cs @@ -1,10 +1,17 @@ using AxibugProtobuf; using ClientCore.Common; +using ClientCore.Event; +using ClientCore.Network; namespace ClientCore.Manager { public class AppLogin { + public AppLogin() + { + NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdLogin, RecvCmdLogin); + } + public void Login(string Account) { Protobuf_Login msg = new Protobuf_Login() @@ -12,7 +19,14 @@ namespace ClientCore.Manager LoginType = 0, Account = Account, }; - App.networkHelper.SendToServer((int)CommandID.CmdLogin, ProtoBufHelper.Serizlize(msg)); + App.networkMain.SendToServer((int)CommandID.CmdLogin, ProtoBufHelper.Serizlize(msg)); + } + + public void RecvCmdLogin(byte[] reqData) + { + Protobuf_Login_RESP msg = ProtoBufHelper.DeSerizlize(reqData); + App.userMgr.SetMainPlayer(msg.UID, msg.NickName, 0); + EventSystem.Instance.PostEvent(EEvent.UserLogin); } } } diff --git a/ClientCore/Manager/ClientManager.cs b/ClientCore/Manager/ClientManager.cs new file mode 100644 index 0000000..90c3198 --- /dev/null +++ b/ClientCore/Manager/ClientManager.cs @@ -0,0 +1,208 @@ +using AxibugProtobuf; +using ClientCore.Common; +using ClientCore.Enum; +using ClientCore.Event; +using ClientCore.Network; +using System.Net.Sockets; +using System.Timers; + +namespace ClientCore.Manager +{ + public class ClientManager + { + bool bTryReConTcpTunnelServer = false; + string IP; + int port; + int tcptunnelport; + int LastlocalPort = 0; + + Dictionary DictUID2TcpTaret = new Dictionary(); + + public ClientManager() + { + //注册事件 + EventSystem.Instance.RegisterEvent(EEvent.OnSocketConnect, OnSocketConnect); + EventSystem.Instance.RegisterEvent(EEvent.OnSocketDisconnect, OnSocketDisconnect); + } + + public void SetIpData(string IP, int port, int tcptunnelport) + { + this.IP = IP; + this.port = port; + this.tcptunnelport = tcptunnelport; + } + + void OnSocketConnect(ServerType servertype, bool IsOk) + { + switch (servertype) + { + case ServerType.MainServer: + { + if (IsOk) + { + Console.WriteLine("MainServer连接成功"); + + } + else + { + Console.WriteLine("MainServer连接失败"); + + } + } + break; + case ServerType.TcpTunnelServer: + { + bTryReConTcpTunnelServer = false; + if (IsOk) + { + Console.WriteLine("TcpTunnelServer连接成功"); + App.p2ptcp.SendHellToSev(); + } + else + { + Console.WriteLine("TcpTunnelServer连接失败"); + } + } + break; + case ServerType.TcpP2PTarget: + { + if (IsOk) + { + Console.WriteLine("TcpP2PTarget连接成功"); + } + } + break; + } + } + void OnSocketDisconnect(ServerType servertype, long uid) + { + switch (servertype) + { + case ServerType.MainServer: + { + Console.WriteLine("MainServer连接断开"); + } + break; + case ServerType.TcpTunnelServer: + { + Console.WriteLine("TcpTunnelServer连接断开"); + Console.WriteLine("TcpTunnelServer,尝试重连"); + ReConnectTcpTunnelServer(); + } + break; + case ServerType.TcpP2PTarget: + { + Console.WriteLine("TcpP2PTarget连接断开"); + RemoveTargetSocket(uid); + } + break; + } + } + + public void ConnectTcpTunnelServer() + { + App.networkTcp2S = new NetworkHelper(Enum.ServerType.TcpTunnelServer); + App.networkTcp2S.Init(IP, tcptunnelport); + } + + public void ReConnectTcpTunnelServer() + { + //TODO 因TEST 暂不重连 + return; + + if (bTryReConTcpTunnelServer) + return; + if (App.networkTcp2S != null && App.networkTcp2S.GetClientSocket() != null && App.networkTcp2S.GetClientSocket().Connected) + return; + bTryReConTcpTunnelServer = true; + + Thread thread = new Thread(ReConnectTcpTunnelServerThread); + thread.IsBackground = true; + thread.Start(); + + } + + private void ReConnectTcpTunnelServerThread() + { + Thread.Sleep(1000); + App.networkTcp2S.Init(IP, tcptunnelport); + } + + + #region P2PTarget 管理 + void AddTargetSocket(NetworkHelper targetSocket) + { + DictUID2TcpTaret[targetSocket.mUID] = targetSocket; + } + + void RemoveTargetSocket(long UID) + { + if (DictUID2TcpTaret.ContainsKey(UID)) + { + DictUID2TcpTaret.Remove(UID); + } + } + + NetworkHelper GetTargetSocket(long UID) + { + if (DictUID2TcpTaret.ContainsKey(UID)) + { + return DictUID2TcpTaret[UID]; + } + return null; + } + + /// + /// 发送给指定UID消息 + /// + /// + /// + /// + public void SendToTargetSocket(long UID,int CMDID,byte[] data) + { + NetworkHelper target = GetTargetSocket(UID); + if (target == null) + return; + target.SendToServer((int)CMDID, data); + } + #endregion + + + #region TCP打洞对连 + + public void ConnectTCPTargetP2P(Protobuf_TcpTunnel_DoTunnel_RESP msg, int localPort) + { + LastlocalPort = localPort; + Thread thread = new Thread(ConnectTCPTargetP2PThread); + thread.IsBackground = true; + thread.Start(msg); + } + + public void ConnectTCPTargetP2PThread(object obj) + { + Thread.Sleep(1000); + int userBindPort = LastlocalPort; + Protobuf_TcpTunnel_DoTunnel_RESP msg = (Protobuf_TcpTunnel_DoTunnel_RESP)obj; + Console.WriteLine("LocalEndPoint Port:" + userBindPort); + NetworkHelper targetSocket = new NetworkHelper(Enum.ServerType.TcpP2PTarget, msg.TargetUID); + targetSocket.Init(msg.OtherIP, msg.OtherPort, true, userBindPort); + //尝试5次连接 + for (int j = 0; j < 5; j++) + { + try + { + targetSocket.Connect(msg.OtherIP, msg.OtherPort); + Console.WriteLine("Connect:成功{0},{1}", msg.OtherIP, msg.OtherPort); + AddTargetSocket(targetSocket); + break; + } + catch (Exception) + { + Console.WriteLine("Connect:失败"); + } + } + } + + #endregion + } +} diff --git a/ClientCore/Manager/P2PChat.cs b/ClientCore/Manager/P2PChat.cs new file mode 100644 index 0000000..574f5f7 --- /dev/null +++ b/ClientCore/Manager/P2PChat.cs @@ -0,0 +1,23 @@ +using AxibugProtobuf; +using ClientCore.Common; +using ClientCore.Event; +using ClientCore.Network; + +namespace ClientCore.Manager +{ + public class P2PChat + { + public P2PChat() + { + //NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdChatmsg, RecvChatMsg); + } + public void SendChatMsg(long UID,string ChatMsg) + { + Protobuf_TcpP2P_Chat msg = new Protobuf_TcpP2P_Chat() + { + ChatMsg = ChatMsg, + }; + App.clientMgr.SendToTargetSocket(UID,(int)CommandID.CmdTcpP2PChat ,ProtoBufHelper.Serizlize(msg)); + } + } +} diff --git a/ClientCore/Manager/P2PTcp.cs b/ClientCore/Manager/P2PTcp.cs new file mode 100644 index 0000000..5134619 --- /dev/null +++ b/ClientCore/Manager/P2PTcp.cs @@ -0,0 +1,61 @@ +using AxibugProtobuf; +using ClientCore.Common; +using ClientCore.Event; +using ClientCore.Network; +using System.Net; +using System.Net.Sockets; + +namespace ClientCore.Manager +{ + public class P2PTcp + { + bool bRegToSev = false; + public P2PTcp() + { + NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdTcptunnelHello, RecvTcptunnelHello); + NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdTcptunnelDo, RecvCmdTcptunnelDo); + } + + public void SendHellToSev() + { + Protobuf_TcpTunnel_HellToSev msg = new Protobuf_TcpTunnel_HellToSev() + { + UID = App.userMgr.MainPlayer.UID + }; + App.networkTcp2S.SendToServer((int)CommandID.CmdTcptunnelHello, ProtoBufHelper.Serizlize(msg)); + } + + public void RecvTcptunnelHello(byte[] reqData) + { + Protobuf_TcpTunnel_HellToSev_RESP msg = ProtoBufHelper.DeSerizlize(reqData); + bRegToSev = true; + EventSystem.Instance.PostEvent(EEvent.TcpTunnelHelloResp); + } + + + public void SendDoTunnel(long targetUID) + { + Protobuf_TcpTunnel_DoTunnel msg = new Protobuf_TcpTunnel_DoTunnel() + { + UID = App.userMgr.MainPlayer.UID, + TargetUID = targetUID + }; + App.networkTcp2S.SendToServer((int)CommandID.CmdTcptunnelDo, ProtoBufHelper.Serizlize(msg)); + } + + public void RecvCmdTcptunnelDo(byte[] reqData) + { + Protobuf_TcpTunnel_DoTunnel_RESP msg = ProtoBufHelper.DeSerizlize(reqData); + //TODO 打洞 + Console.WriteLine($"打洞目标信息 {msg.TargetUID} {msg.OtherIP} {msg.OtherPort}"); + + int localPort = ((IPEndPoint)App.networkTcp2S.GetClientSocket().LocalEndPoint).Port; + + //断开连接 + App.networkTcp2S.CloseConntect(); + + App.clientMgr.ConnectTCPTargetP2P(msg, localPort); + } + + } +} \ No newline at end of file diff --git a/ClientCore/Manager/UserMgr.cs b/ClientCore/Manager/UserMgr.cs index facb5ce..f58b0df 100644 --- a/ClientCore/Manager/UserMgr.cs +++ b/ClientCore/Manager/UserMgr.cs @@ -1,5 +1,6 @@ using AxibugProtobuf; using ClientCore.Common; +using ClientCore.Data; using ClientCore.Event; using ClientCore.Network; using System; @@ -7,27 +8,41 @@ using System.Security.Cryptography; namespace ClientCore.Manager { - public class UserInfo - { - public long UID;//用户ID - public string NickName;//昵称 - public int State;//状态 - } public class UserMgr { - public Dictionary DictUID2User = new Dictionary(); + public UserInfo MainPlayer { get; private set; } + public bool bLogin => MainPlayer != null; + Dictionary DictUID2User = new Dictionary(); public UserMgr() { + //网络事件注册 NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdUserOnlinelist, RecvUserOnlinelist); NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdUserJoin, RecvCmdUserJoin); NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdUserLeave, RecvGetUserLeave); } + public void SetMainPlayer(long uid,string account,int state) + { + MainPlayer = new UserInfo() + { + State = state, + NickName = account, + UID = uid + }; + } + + public void Send_GetUserList() + { + Protobuf_UserList msg = new Protobuf_UserList() + { + }; + App.networkMain.SendToServer((int)CommandID.CmdUserOnlinelist, ProtoBufHelper.Serizlize(msg)); + } + public void RecvUserOnlinelist(byte[] reqData) { Protobuf_UserList_RESP msg = ProtoBufHelper.DeSerizlize(reqData); - for(int i = 0;i < msg.UserList.Count;i++) { UserMiniInfo mi = msg.UserList[i]; @@ -86,5 +101,16 @@ namespace ClientCore.Manager EventSystem.Instance.PostEvent(EEvent.UserLeave, UID); } } + + public UserInfo[] GetUserInfo() + { + UserInfo[] ulist = new UserInfo[DictUID2User.Count]; + long[] UIDs = DictUID2User.Keys.ToArray(); + for (int i = 0; i < UIDs.Length; i++) + { + ulist[i] = DictUID2User[UIDs[i]]; + } + return ulist; + } } } diff --git a/ClientCore/Network/NetworkHelper.cs b/ClientCore/Network/NetworkHelper.cs index 4c45fcc..bd87060 100644 --- a/ClientCore/Network/NetworkHelper.cs +++ b/ClientCore/Network/NetworkHelper.cs @@ -1,4 +1,6 @@ using AxibugProtobuf; +using ClientCore.Enum; +using ClientCore.Event; using HaoYueNet.ClientNetwork; using System; using System.Collections.Generic; @@ -13,7 +15,9 @@ namespace ClientCore.Network /// public class NetworkHelper : NetworkHelperCore { - public NetworkHelper() + ServerType mServerType; + public long mUID { get; private set; } = -1; + public NetworkHelper(ServerType serverType,long UID = -1) { //指定接收服务器数据事件 OnDataCallBack += GetDataCallBack; @@ -22,15 +26,21 @@ namespace ClientCore.Network //网络库调试信息输出事件,用于打印连接断开,收发事件 OnLogOut += NetworkDeBugLog; OnConnected += NetworkConnected; + mServerType = serverType; + mUID = UID; } public void NetworkConnected(bool IsConnect) { if (IsConnect) + { + EventSystem.Instance.PostEvent(EEvent.OnSocketConnect, mServerType, true); NetworkDeBugLog("服务器连接成功"); + } else { + EventSystem.Instance.PostEvent(EEvent.OnSocketConnect, mServerType, false); NetworkDeBugLog("服务器连接失败"); //to do 重连逻辑 } @@ -71,6 +81,7 @@ namespace ClientCore.Network public void OnConnectClose() { NetworkDeBugLog("OnConnectClose"); + EventSystem.Instance.PostEvent(EEvent.OnSocketDisconnect, mServerType, mUID); } } } diff --git a/NetLib/HaoYueNet.ClientNetwork.dll b/NetLib/HaoYueNet.ClientNetwork.dll index 3e5d2f5ec00825c0c469048f58989889f5a64211..e212c608bc82f649c1d4028b16b5fa13f8663acc 100644 GIT binary patch delta 7160 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 U-lWTZ5Ij7tH#qSm>#1=6KcjT~IsgCw delta 6251 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 diff --git a/Protobuf/ProtobufAuth.cs b/Protobuf/ProtobufAuth.cs index b2b5cad..3fdc87c 100644 --- a/Protobuf/ProtobufAuth.cs +++ b/Protobuf/ProtobufAuth.cs @@ -28,28 +28,29 @@ namespace AxibugProtobuf { "dG9idWZfTG9naW4SLAoJbG9naW5UeXBlGAEgASgOMhkuQXhpYnVnUHJvdG9i", "dWYuTG9naW5UeXBlEi4KCmRldmljZVR5cGUYAiABKA4yGi5BeGlidWdQcm90", "b2J1Zi5EZXZpY2VUeXBlEg8KB0FjY291bnQYAyABKAkSEAoIUGFzc3dvcmQY", - "BCABKAkifwoTUHJvdG9idWZfTG9naW5fUkVTUBINCgVUb2tlbhgBIAEoCRIV", - "Cg1MYXN0TG9naW5EYXRlGAIgASgJEg8KB1JlZ0RhdGUYAyABKAkSMQoGU3Rh", - "dHVzGAQgASgOMiEuQXhpYnVnUHJvdG9idWYuTG9naW5SZXN1bHRTdGF0dXMi", - "IwoQUHJvdG9idWZfQ2hhdE1zZxIPCgdDaGF0TXNnGAEgASgJIkgKFVByb3Rv", - "YnVmX0NoYXRNc2dfUkVTUBIQCghOaWNrTmFtZRgBIAEoCRIPCgdDaGF0TXNn", - "GAIgASgJEgwKBERhdGUYAyABKAMqzQEKCUNvbW1hbmRJRBIOCgpDTURfREVG", - "QVVMEAASDgoJQ01EX0xPR0lOENAPEhAKC0NNRF9DSEFUTVNHEKAfEhgKE0NN", - "RF9VU0VSX09OTElORUxJU1QQiCcSEgoNQ01EX1VTRVJfSk9JThCnJxITCg5D", - "TURfVVNFUl9MRUFWRRCoJxIaChVDTURfVVNFUl9TVEFURV9VUERBVEUQqScS", - "GAoTQ01EX1RDUFRVTk5FTF9IRUxMTxCJJxIVChBDTURfVENQVFVOTkVMX0RP", - "EIonKj4KCUVycm9yQ29kZRIQCgxFUlJPUl9ERUZBVUwQABIMCghFUlJPUl9P", - "SxABEhEKDUVSUk9SX05PVEZBTkQQZCo+CglMb2dpblR5cGUSDwoLQmFzZURl", - "ZmF1bHQQABIOCgpIYW9ZdWVBdXRoEAESBwoDQkYzEAMSBwoDQkY0EAQqSwoK", - "RGV2aWNlVHlwZRIWChJEZXZpY2VUeXBlX0RlZmF1bHQQABIGCgJQQxABEgsK", - "B0FuZHJvaWQQAhIHCgNJT1MQAxIHCgNQU1YQBCpOChFMb2dpblJlc3VsdFN0", - "YXR1cxIhCh1Mb2dpblJlc3VsdFN0YXR1c19CYXNlRGVmYXVsdBAAEgYKAk9L", - "EAESDgoKQWNjb3VudEVychACQgJIAWIGcHJvdG8z")); + "BCABKAkingEKE1Byb3RvYnVmX0xvZ2luX1JFU1ASDQoFVG9rZW4YASABKAkS", + "FQoNTGFzdExvZ2luRGF0ZRgCIAEoCRIPCgdSZWdEYXRlGAMgASgJEjEKBlN0", + "YXR1cxgEIAEoDjIhLkF4aWJ1Z1Byb3RvYnVmLkxvZ2luUmVzdWx0U3RhdHVz", + "EgsKA1VJRBgFIAEoAxIQCghOaWNrTmFtZRgGIAEoCSIjChBQcm90b2J1Zl9D", + "aGF0TXNnEg8KB0NoYXRNc2cYASABKAkiSAoVUHJvdG9idWZfQ2hhdE1zZ19S", + "RVNQEhAKCE5pY2tOYW1lGAEgASgJEg8KB0NoYXRNc2cYAiABKAkSDAoERGF0", + "ZRgDIAEoAyrkAQoJQ29tbWFuZElEEg4KCkNNRF9ERUZBVUwQABIOCglDTURf", + "TE9HSU4Q0A8SEAoLQ01EX0NIQVRNU0cQoB8SGAoTQ01EX1VTRVJfT05MSU5F", + "TElTVBCIJxISCg1DTURfVVNFUl9KT0lOEKcnEhMKDkNNRF9VU0VSX0xFQVZF", + "EKgnEhoKFUNNRF9VU0VSX1NUQVRFX1VQREFURRCpJxIYChNDTURfVENQVFVO", + "TkVMX0hFTExPEIknEhUKEENNRF9UQ1BUVU5ORUxfRE8QiicSFQoQQ01EX1RD", + "UF9QMlBfQ0hBVBCRTio+CglFcnJvckNvZGUSEAoMRVJST1JfREVGQVVMEAAS", + "DAoIRVJST1JfT0sQARIRCg1FUlJPUl9OT1RGSU5EEGQqPgoJTG9naW5UeXBl", + "Eg8KC0Jhc2VEZWZhdWx0EAASDgoKSGFvWXVlQXV0aBABEgcKA0JGMxADEgcK", + "A0JGNBAEKksKCkRldmljZVR5cGUSFgoSRGV2aWNlVHlwZV9EZWZhdWx0EAAS", + "BgoCUEMQARILCgdBbmRyb2lkEAISBwoDSU9TEAMSBwoDUFNWEAQqTgoRTG9n", + "aW5SZXN1bHRTdGF0dXMSIQodTG9naW5SZXN1bHRTdGF0dXNfQmFzZURlZmF1", + "bHQQABIGCgJPSxABEg4KCkFjY291bnRFcnIQAkICSAFiBnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::AxibugProtobuf.CommandID), typeof(global::AxibugProtobuf.ErrorCode), typeof(global::AxibugProtobuf.LoginType), typeof(global::AxibugProtobuf.DeviceType), typeof(global::AxibugProtobuf.LoginResultStatus), }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Login), global::AxibugProtobuf.Protobuf_Login.Parser, new[]{ "LoginType", "DeviceType", "Account", "Password" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Login_RESP), global::AxibugProtobuf.Protobuf_Login_RESP.Parser, new[]{ "Token", "LastLoginDate", "RegDate", "Status" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Login_RESP), global::AxibugProtobuf.Protobuf_Login_RESP.Parser, new[]{ "Token", "LastLoginDate", "RegDate", "Status", "UID", "NickName" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_ChatMsg), global::AxibugProtobuf.Protobuf_ChatMsg.Parser, new[]{ "ChatMsg" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_ChatMsg_RESP), global::AxibugProtobuf.Protobuf_ChatMsg_RESP.Parser, new[]{ "NickName", "ChatMsg", "Date" }, null, null, null, null) })); @@ -95,6 +96,10 @@ namespace AxibugProtobuf { ///TCP打洞请求 下行 对应 Protobuf_TcpTunnel_DoTunnel | Protobuf_TcpTunnel_DoTunnel_RESP /// [pbr::OriginalName("CMD_TCPTUNNEL_DO")] CmdTcptunnelDo = 5002, + /// + ///TCPP2P聊天 Protobuf_TcpP2P_Chat + /// + [pbr::OriginalName("CMD_TCP_P2P_CHAT")] CmdTcpP2PChat = 10001, } public enum ErrorCode { @@ -109,7 +114,7 @@ namespace AxibugProtobuf { /// ///用户不存在 /// - [pbr::OriginalName("ERROR_NOTFAND")] ErrorNotfand = 100, + [pbr::OriginalName("ERROR_NOTFIND")] ErrorNotfind = 100, } public enum LoginType { @@ -476,6 +481,8 @@ namespace AxibugProtobuf { lastLoginDate_ = other.lastLoginDate_; regDate_ = other.regDate_; status_ = other.status_; + uID_ = other.uID_; + nickName_ = other.nickName_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -540,6 +547,34 @@ namespace AxibugProtobuf { } } + /// Field number for the "UID" field. + public const int UIDFieldNumber = 5; + private long uID_; + /// + ///UID + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public long UID { + get { return uID_; } + set { + uID_ = value; + } + } + + /// Field number for the "NickName" field. + public const int NickNameFieldNumber = 6; + private string nickName_ = ""; + /// + ///昵称 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string NickName { + get { return nickName_; } + set { + nickName_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override bool Equals(object other) { return Equals(other as Protobuf_Login_RESP); @@ -557,6 +592,8 @@ namespace AxibugProtobuf { if (LastLoginDate != other.LastLoginDate) return false; if (RegDate != other.RegDate) return false; if (Status != other.Status) return false; + if (UID != other.UID) return false; + if (NickName != other.NickName) return false; return Equals(_unknownFields, other._unknownFields); } @@ -567,6 +604,8 @@ namespace AxibugProtobuf { if (LastLoginDate.Length != 0) hash ^= LastLoginDate.GetHashCode(); if (RegDate.Length != 0) hash ^= RegDate.GetHashCode(); if (Status != global::AxibugProtobuf.LoginResultStatus.BaseDefault) hash ^= Status.GetHashCode(); + if (UID != 0L) hash ^= UID.GetHashCode(); + if (NickName.Length != 0) hash ^= NickName.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -599,6 +638,14 @@ namespace AxibugProtobuf { output.WriteRawTag(32); output.WriteEnum((int) Status); } + if (UID != 0L) { + output.WriteRawTag(40); + output.WriteInt64(UID); + } + if (NickName.Length != 0) { + output.WriteRawTag(50); + output.WriteString(NickName); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -624,6 +671,14 @@ namespace AxibugProtobuf { output.WriteRawTag(32); output.WriteEnum((int) Status); } + if (UID != 0L) { + output.WriteRawTag(40); + output.WriteInt64(UID); + } + if (NickName.Length != 0) { + output.WriteRawTag(50); + output.WriteString(NickName); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -645,6 +700,12 @@ namespace AxibugProtobuf { if (Status != global::AxibugProtobuf.LoginResultStatus.BaseDefault) { size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Status); } + if (UID != 0L) { + size += 1 + pb::CodedOutputStream.ComputeInt64Size(UID); + } + if (NickName.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(NickName); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -668,6 +729,12 @@ namespace AxibugProtobuf { if (other.Status != global::AxibugProtobuf.LoginResultStatus.BaseDefault) { Status = other.Status; } + if (other.UID != 0L) { + UID = other.UID; + } + if (other.NickName.Length != 0) { + NickName = other.NickName; + } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -698,6 +765,14 @@ namespace AxibugProtobuf { Status = (global::AxibugProtobuf.LoginResultStatus) input.ReadEnum(); break; } + case 40: { + UID = input.ReadInt64(); + break; + } + case 50: { + NickName = input.ReadString(); + break; + } } } #endif @@ -728,6 +803,14 @@ namespace AxibugProtobuf { Status = (global::AxibugProtobuf.LoginResultStatus) input.ReadEnum(); break; } + case 40: { + UID = input.ReadInt64(); + break; + } + case 50: { + NickName = input.ReadString(); + break; + } } } } diff --git a/Protobuf/ProtobufTcpTunnel.cs b/Protobuf/ProtobufTcpTunnel.cs index 3c26d84..bb80caa 100644 --- a/Protobuf/ProtobufTcpTunnel.cs +++ b/Protobuf/ProtobufTcpTunnel.cs @@ -30,15 +30,17 @@ namespace AxibugProtobuf { "Zl9UY3BUdW5uZWxfRG9UdW5uZWwSCwoDVUlEGAEgASgDEhEKCXRhcmdldFVJ", "RBgCIAEoAyJ3CiBQcm90b2J1Zl9UY3BUdW5uZWxfRG9UdW5uZWxfUkVTUBIR", "Cgl0YXJnZXRVSUQYASABKAMSDAoEbXlJUBgCIAEoCRIOCgZteVBvcnQYAyAB", - "KAUSDwoHb3RoZXJJUBgEIAEoCRIRCglvdGhlclBvcnQYBSABKAVCAkgBYgZw", - "cm90bzM=")); + "KAUSDwoHb3RoZXJJUBgEIAEoCRIRCglvdGhlclBvcnQYBSABKAUiJwoUUHJv", + "dG9idWZfVGNwUDJQX0NoYXQSDwoHQ2hhdE1zZxgBIAEoCUICSAFiBnByb3Rv", + "Mw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_TcpTunnel_HellToSev), global::AxibugProtobuf.Protobuf_TcpTunnel_HellToSev.Parser, new[]{ "UID" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_TcpTunnel_HellToSev_RESP), global::AxibugProtobuf.Protobuf_TcpTunnel_HellToSev_RESP.Parser, null, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_TcpTunnel_DoTunnel), global::AxibugProtobuf.Protobuf_TcpTunnel_DoTunnel.Parser, new[]{ "UID", "TargetUID" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_TcpTunnel_DoTunnel_RESP), global::AxibugProtobuf.Protobuf_TcpTunnel_DoTunnel_RESP.Parser, new[]{ "TargetUID", "MyIP", "MyPort", "OtherIP", "OtherPort" }, null, null, null, null) + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_TcpTunnel_DoTunnel_RESP), global::AxibugProtobuf.Protobuf_TcpTunnel_DoTunnel_RESP.Parser, new[]{ "TargetUID", "MyIP", "MyPort", "OtherIP", "OtherPort" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_TcpP2P_Chat), global::AxibugProtobuf.Protobuf_TcpP2P_Chat.Parser, new[]{ "ChatMsg" }, null, null, null, null) })); } #endregion @@ -913,6 +915,184 @@ namespace AxibugProtobuf { } + /// + ///TCPP2P聊天 + /// + public sealed partial class Protobuf_TcpP2P_Chat : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Protobuf_TcpP2P_Chat()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::AxibugProtobuf.ProtobufTcpTunnelReflection.Descriptor.MessageTypes[4]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_TcpP2P_Chat() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_TcpP2P_Chat(Protobuf_TcpP2P_Chat other) : this() { + chatMsg_ = other.chatMsg_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_TcpP2P_Chat Clone() { + return new Protobuf_TcpP2P_Chat(this); + } + + /// Field number for the "ChatMsg" field. + public const int ChatMsgFieldNumber = 1; + private string chatMsg_ = ""; + /// + ///消息 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string ChatMsg { + get { return chatMsg_; } + set { + chatMsg_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Protobuf_TcpP2P_Chat); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Protobuf_TcpP2P_Chat other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (ChatMsg != other.ChatMsg) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (ChatMsg.Length != 0) hash ^= ChatMsg.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (ChatMsg.Length != 0) { + output.WriteRawTag(10); + output.WriteString(ChatMsg); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (ChatMsg.Length != 0) { + output.WriteRawTag(10); + output.WriteString(ChatMsg); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (ChatMsg.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(ChatMsg); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Protobuf_TcpP2P_Chat other) { + if (other == null) { + return; + } + if (other.ChatMsg.Length != 0) { + ChatMsg = other.ChatMsg; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + ChatMsg = input.ReadString(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + ChatMsg = input.ReadString(); + break; + } + } + } + } + #endif + + } + #endregion } diff --git a/ProtobufCore/out/ProtobufAuth.cs b/ProtobufCore/out/ProtobufAuth.cs index b2b5cad..3fdc87c 100644 --- a/ProtobufCore/out/ProtobufAuth.cs +++ b/ProtobufCore/out/ProtobufAuth.cs @@ -28,28 +28,29 @@ namespace AxibugProtobuf { "dG9idWZfTG9naW4SLAoJbG9naW5UeXBlGAEgASgOMhkuQXhpYnVnUHJvdG9i", "dWYuTG9naW5UeXBlEi4KCmRldmljZVR5cGUYAiABKA4yGi5BeGlidWdQcm90", "b2J1Zi5EZXZpY2VUeXBlEg8KB0FjY291bnQYAyABKAkSEAoIUGFzc3dvcmQY", - "BCABKAkifwoTUHJvdG9idWZfTG9naW5fUkVTUBINCgVUb2tlbhgBIAEoCRIV", - "Cg1MYXN0TG9naW5EYXRlGAIgASgJEg8KB1JlZ0RhdGUYAyABKAkSMQoGU3Rh", - "dHVzGAQgASgOMiEuQXhpYnVnUHJvdG9idWYuTG9naW5SZXN1bHRTdGF0dXMi", - "IwoQUHJvdG9idWZfQ2hhdE1zZxIPCgdDaGF0TXNnGAEgASgJIkgKFVByb3Rv", - "YnVmX0NoYXRNc2dfUkVTUBIQCghOaWNrTmFtZRgBIAEoCRIPCgdDaGF0TXNn", - "GAIgASgJEgwKBERhdGUYAyABKAMqzQEKCUNvbW1hbmRJRBIOCgpDTURfREVG", - "QVVMEAASDgoJQ01EX0xPR0lOENAPEhAKC0NNRF9DSEFUTVNHEKAfEhgKE0NN", - "RF9VU0VSX09OTElORUxJU1QQiCcSEgoNQ01EX1VTRVJfSk9JThCnJxITCg5D", - "TURfVVNFUl9MRUFWRRCoJxIaChVDTURfVVNFUl9TVEFURV9VUERBVEUQqScS", - "GAoTQ01EX1RDUFRVTk5FTF9IRUxMTxCJJxIVChBDTURfVENQVFVOTkVMX0RP", - "EIonKj4KCUVycm9yQ29kZRIQCgxFUlJPUl9ERUZBVUwQABIMCghFUlJPUl9P", - "SxABEhEKDUVSUk9SX05PVEZBTkQQZCo+CglMb2dpblR5cGUSDwoLQmFzZURl", - "ZmF1bHQQABIOCgpIYW9ZdWVBdXRoEAESBwoDQkYzEAMSBwoDQkY0EAQqSwoK", - "RGV2aWNlVHlwZRIWChJEZXZpY2VUeXBlX0RlZmF1bHQQABIGCgJQQxABEgsK", - "B0FuZHJvaWQQAhIHCgNJT1MQAxIHCgNQU1YQBCpOChFMb2dpblJlc3VsdFN0", - "YXR1cxIhCh1Mb2dpblJlc3VsdFN0YXR1c19CYXNlRGVmYXVsdBAAEgYKAk9L", - "EAESDgoKQWNjb3VudEVychACQgJIAWIGcHJvdG8z")); + "BCABKAkingEKE1Byb3RvYnVmX0xvZ2luX1JFU1ASDQoFVG9rZW4YASABKAkS", + "FQoNTGFzdExvZ2luRGF0ZRgCIAEoCRIPCgdSZWdEYXRlGAMgASgJEjEKBlN0", + "YXR1cxgEIAEoDjIhLkF4aWJ1Z1Byb3RvYnVmLkxvZ2luUmVzdWx0U3RhdHVz", + "EgsKA1VJRBgFIAEoAxIQCghOaWNrTmFtZRgGIAEoCSIjChBQcm90b2J1Zl9D", + "aGF0TXNnEg8KB0NoYXRNc2cYASABKAkiSAoVUHJvdG9idWZfQ2hhdE1zZ19S", + "RVNQEhAKCE5pY2tOYW1lGAEgASgJEg8KB0NoYXRNc2cYAiABKAkSDAoERGF0", + "ZRgDIAEoAyrkAQoJQ29tbWFuZElEEg4KCkNNRF9ERUZBVUwQABIOCglDTURf", + "TE9HSU4Q0A8SEAoLQ01EX0NIQVRNU0cQoB8SGAoTQ01EX1VTRVJfT05MSU5F", + "TElTVBCIJxISCg1DTURfVVNFUl9KT0lOEKcnEhMKDkNNRF9VU0VSX0xFQVZF", + "EKgnEhoKFUNNRF9VU0VSX1NUQVRFX1VQREFURRCpJxIYChNDTURfVENQVFVO", + "TkVMX0hFTExPEIknEhUKEENNRF9UQ1BUVU5ORUxfRE8QiicSFQoQQ01EX1RD", + "UF9QMlBfQ0hBVBCRTio+CglFcnJvckNvZGUSEAoMRVJST1JfREVGQVVMEAAS", + "DAoIRVJST1JfT0sQARIRCg1FUlJPUl9OT1RGSU5EEGQqPgoJTG9naW5UeXBl", + "Eg8KC0Jhc2VEZWZhdWx0EAASDgoKSGFvWXVlQXV0aBABEgcKA0JGMxADEgcK", + "A0JGNBAEKksKCkRldmljZVR5cGUSFgoSRGV2aWNlVHlwZV9EZWZhdWx0EAAS", + "BgoCUEMQARILCgdBbmRyb2lkEAISBwoDSU9TEAMSBwoDUFNWEAQqTgoRTG9n", + "aW5SZXN1bHRTdGF0dXMSIQodTG9naW5SZXN1bHRTdGF0dXNfQmFzZURlZmF1", + "bHQQABIGCgJPSxABEg4KCkFjY291bnRFcnIQAkICSAFiBnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::AxibugProtobuf.CommandID), typeof(global::AxibugProtobuf.ErrorCode), typeof(global::AxibugProtobuf.LoginType), typeof(global::AxibugProtobuf.DeviceType), typeof(global::AxibugProtobuf.LoginResultStatus), }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Login), global::AxibugProtobuf.Protobuf_Login.Parser, new[]{ "LoginType", "DeviceType", "Account", "Password" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Login_RESP), global::AxibugProtobuf.Protobuf_Login_RESP.Parser, new[]{ "Token", "LastLoginDate", "RegDate", "Status" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Login_RESP), global::AxibugProtobuf.Protobuf_Login_RESP.Parser, new[]{ "Token", "LastLoginDate", "RegDate", "Status", "UID", "NickName" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_ChatMsg), global::AxibugProtobuf.Protobuf_ChatMsg.Parser, new[]{ "ChatMsg" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_ChatMsg_RESP), global::AxibugProtobuf.Protobuf_ChatMsg_RESP.Parser, new[]{ "NickName", "ChatMsg", "Date" }, null, null, null, null) })); @@ -95,6 +96,10 @@ namespace AxibugProtobuf { ///TCP打洞请求 下行 对应 Protobuf_TcpTunnel_DoTunnel | Protobuf_TcpTunnel_DoTunnel_RESP /// [pbr::OriginalName("CMD_TCPTUNNEL_DO")] CmdTcptunnelDo = 5002, + /// + ///TCPP2P聊天 Protobuf_TcpP2P_Chat + /// + [pbr::OriginalName("CMD_TCP_P2P_CHAT")] CmdTcpP2PChat = 10001, } public enum ErrorCode { @@ -109,7 +114,7 @@ namespace AxibugProtobuf { /// ///用户不存在 /// - [pbr::OriginalName("ERROR_NOTFAND")] ErrorNotfand = 100, + [pbr::OriginalName("ERROR_NOTFIND")] ErrorNotfind = 100, } public enum LoginType { @@ -476,6 +481,8 @@ namespace AxibugProtobuf { lastLoginDate_ = other.lastLoginDate_; regDate_ = other.regDate_; status_ = other.status_; + uID_ = other.uID_; + nickName_ = other.nickName_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -540,6 +547,34 @@ namespace AxibugProtobuf { } } + /// Field number for the "UID" field. + public const int UIDFieldNumber = 5; + private long uID_; + /// + ///UID + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public long UID { + get { return uID_; } + set { + uID_ = value; + } + } + + /// Field number for the "NickName" field. + public const int NickNameFieldNumber = 6; + private string nickName_ = ""; + /// + ///昵称 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string NickName { + get { return nickName_; } + set { + nickName_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override bool Equals(object other) { return Equals(other as Protobuf_Login_RESP); @@ -557,6 +592,8 @@ namespace AxibugProtobuf { if (LastLoginDate != other.LastLoginDate) return false; if (RegDate != other.RegDate) return false; if (Status != other.Status) return false; + if (UID != other.UID) return false; + if (NickName != other.NickName) return false; return Equals(_unknownFields, other._unknownFields); } @@ -567,6 +604,8 @@ namespace AxibugProtobuf { if (LastLoginDate.Length != 0) hash ^= LastLoginDate.GetHashCode(); if (RegDate.Length != 0) hash ^= RegDate.GetHashCode(); if (Status != global::AxibugProtobuf.LoginResultStatus.BaseDefault) hash ^= Status.GetHashCode(); + if (UID != 0L) hash ^= UID.GetHashCode(); + if (NickName.Length != 0) hash ^= NickName.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -599,6 +638,14 @@ namespace AxibugProtobuf { output.WriteRawTag(32); output.WriteEnum((int) Status); } + if (UID != 0L) { + output.WriteRawTag(40); + output.WriteInt64(UID); + } + if (NickName.Length != 0) { + output.WriteRawTag(50); + output.WriteString(NickName); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -624,6 +671,14 @@ namespace AxibugProtobuf { output.WriteRawTag(32); output.WriteEnum((int) Status); } + if (UID != 0L) { + output.WriteRawTag(40); + output.WriteInt64(UID); + } + if (NickName.Length != 0) { + output.WriteRawTag(50); + output.WriteString(NickName); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -645,6 +700,12 @@ namespace AxibugProtobuf { if (Status != global::AxibugProtobuf.LoginResultStatus.BaseDefault) { size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Status); } + if (UID != 0L) { + size += 1 + pb::CodedOutputStream.ComputeInt64Size(UID); + } + if (NickName.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(NickName); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -668,6 +729,12 @@ namespace AxibugProtobuf { if (other.Status != global::AxibugProtobuf.LoginResultStatus.BaseDefault) { Status = other.Status; } + if (other.UID != 0L) { + UID = other.UID; + } + if (other.NickName.Length != 0) { + NickName = other.NickName; + } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -698,6 +765,14 @@ namespace AxibugProtobuf { Status = (global::AxibugProtobuf.LoginResultStatus) input.ReadEnum(); break; } + case 40: { + UID = input.ReadInt64(); + break; + } + case 50: { + NickName = input.ReadString(); + break; + } } } #endif @@ -728,6 +803,14 @@ namespace AxibugProtobuf { Status = (global::AxibugProtobuf.LoginResultStatus) input.ReadEnum(); break; } + case 40: { + UID = input.ReadInt64(); + break; + } + case 50: { + NickName = input.ReadString(); + break; + } } } } diff --git a/ProtobufCore/out/ProtobufTcpTunnel.cs b/ProtobufCore/out/ProtobufTcpTunnel.cs index 3c26d84..bb80caa 100644 --- a/ProtobufCore/out/ProtobufTcpTunnel.cs +++ b/ProtobufCore/out/ProtobufTcpTunnel.cs @@ -30,15 +30,17 @@ namespace AxibugProtobuf { "Zl9UY3BUdW5uZWxfRG9UdW5uZWwSCwoDVUlEGAEgASgDEhEKCXRhcmdldFVJ", "RBgCIAEoAyJ3CiBQcm90b2J1Zl9UY3BUdW5uZWxfRG9UdW5uZWxfUkVTUBIR", "Cgl0YXJnZXRVSUQYASABKAMSDAoEbXlJUBgCIAEoCRIOCgZteVBvcnQYAyAB", - "KAUSDwoHb3RoZXJJUBgEIAEoCRIRCglvdGhlclBvcnQYBSABKAVCAkgBYgZw", - "cm90bzM=")); + "KAUSDwoHb3RoZXJJUBgEIAEoCRIRCglvdGhlclBvcnQYBSABKAUiJwoUUHJv", + "dG9idWZfVGNwUDJQX0NoYXQSDwoHQ2hhdE1zZxgBIAEoCUICSAFiBnByb3Rv", + "Mw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_TcpTunnel_HellToSev), global::AxibugProtobuf.Protobuf_TcpTunnel_HellToSev.Parser, new[]{ "UID" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_TcpTunnel_HellToSev_RESP), global::AxibugProtobuf.Protobuf_TcpTunnel_HellToSev_RESP.Parser, null, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_TcpTunnel_DoTunnel), global::AxibugProtobuf.Protobuf_TcpTunnel_DoTunnel.Parser, new[]{ "UID", "TargetUID" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_TcpTunnel_DoTunnel_RESP), global::AxibugProtobuf.Protobuf_TcpTunnel_DoTunnel_RESP.Parser, new[]{ "TargetUID", "MyIP", "MyPort", "OtherIP", "OtherPort" }, null, null, null, null) + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_TcpTunnel_DoTunnel_RESP), global::AxibugProtobuf.Protobuf_TcpTunnel_DoTunnel_RESP.Parser, new[]{ "TargetUID", "MyIP", "MyPort", "OtherIP", "OtherPort" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_TcpP2P_Chat), global::AxibugProtobuf.Protobuf_TcpP2P_Chat.Parser, new[]{ "ChatMsg" }, null, null, null, null) })); } #endregion @@ -913,6 +915,184 @@ namespace AxibugProtobuf { } + /// + ///TCPP2P聊天 + /// + public sealed partial class Protobuf_TcpP2P_Chat : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Protobuf_TcpP2P_Chat()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::AxibugProtobuf.ProtobufTcpTunnelReflection.Descriptor.MessageTypes[4]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_TcpP2P_Chat() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_TcpP2P_Chat(Protobuf_TcpP2P_Chat other) : this() { + chatMsg_ = other.chatMsg_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_TcpP2P_Chat Clone() { + return new Protobuf_TcpP2P_Chat(this); + } + + /// Field number for the "ChatMsg" field. + public const int ChatMsgFieldNumber = 1; + private string chatMsg_ = ""; + /// + ///消息 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string ChatMsg { + get { return chatMsg_; } + set { + chatMsg_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Protobuf_TcpP2P_Chat); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Protobuf_TcpP2P_Chat other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (ChatMsg != other.ChatMsg) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (ChatMsg.Length != 0) hash ^= ChatMsg.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (ChatMsg.Length != 0) { + output.WriteRawTag(10); + output.WriteString(ChatMsg); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (ChatMsg.Length != 0) { + output.WriteRawTag(10); + output.WriteString(ChatMsg); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (ChatMsg.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(ChatMsg); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Protobuf_TcpP2P_Chat other) { + if (other == null) { + return; + } + if (other.ChatMsg.Length != 0) { + ChatMsg = other.ChatMsg; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 10: { + ChatMsg = input.ReadString(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 10: { + ChatMsg = input.ReadString(); + break; + } + } + } + } + #endif + + } + #endregion } diff --git a/ProtobufCore/proto/protobuf_Auth.proto b/ProtobufCore/proto/protobuf_Auth.proto index d9dda24..a2835f4 100644 --- a/ProtobufCore/proto/protobuf_Auth.proto +++ b/ProtobufCore/proto/protobuf_Auth.proto @@ -17,6 +17,8 @@ enum CommandID CMD_TCPTUNNEL_HELLO = 5001; //TCP打洞请求 上行 | 下行 对应 Protobuf_TcpTunnel_HellToSev | Protobuf_TcpTunnel_HellToSev_RESP CMD_TCPTUNNEL_DO = 5002; //TCP打洞请求 下行 对应 Protobuf_TcpTunnel_DoTunnel | Protobuf_TcpTunnel_DoTunnel_RESP + + CMD_TCP_P2P_CHAT = 10001; //TCPP2P聊天 Protobuf_TcpP2P_Chat } enum ErrorCode @@ -66,6 +68,8 @@ message Protobuf_Login_RESP string LastLoginDate = 2;//上次登录时间(只用于呈现的字符串,若界面需求需要) string RegDate = 3;//注册时间(只用于呈现的字符串,若界面需求需要) LoginResultStatus Status = 4;//账号状态 (预留) [1]正常[0]被禁封 + int64 UID = 5;//UID + string NickName = 6;//昵称 } diff --git a/ProtobufCore/proto/protobuf_TcpTunnel.proto b/ProtobufCore/proto/protobuf_TcpTunnel.proto index bf0aff8..fcf042c 100644 --- a/ProtobufCore/proto/protobuf_TcpTunnel.proto +++ b/ProtobufCore/proto/protobuf_TcpTunnel.proto @@ -30,3 +30,13 @@ message Protobuf_TcpTunnel_DoTunnel_RESP string otherIP = 4;//对方的IP int32 otherPort = 5;//对方的Port } + + +////////////////////////////TCP P2P聊天////////////////// + +//TCPP2P聊天 +message Protobuf_TcpP2P_Chat +{ + string ChatMsg = 1;//消息 +} + diff --git a/Server/Program.cs b/Server/Program.cs index 56b243f..9b06c5d 100644 --- a/Server/Program.cs +++ b/Server/Program.cs @@ -1,5 +1,6 @@ using ServerCore.Manager; +Console.ForegroundColor = ConsoleColor.Green; ServerManager.InitServer(23846, 23847); while (true) @@ -12,6 +13,9 @@ while (true) case "list": Console.WriteLine("当前在线:" + ServerManager.g_ClientMgr.GetOnlineClientCount()); break; + case "tlist": + Console.WriteLine("当前TcpTunnel在线:" + ServerManager.g_TcpTunnelMgr.GetOnlineClientCount()); + break; default: Console.WriteLine("未知命令" + CommandStr); break; diff --git a/ServerCore/Common/Enum/CommEnum.cs b/ServerCore/Common/Enum/CommEnum.cs new file mode 100644 index 0000000..9b14ae6 --- /dev/null +++ b/ServerCore/Common/Enum/CommEnum.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ServerCore.Common.Enum +{ + public enum ServerType + { + MainServer, + TcpTunnelServer + } +} diff --git a/ServerCore/Event/EEvent.cs b/ServerCore/Event/EEvent.cs index a2d126e..8e126e8 100644 --- a/ServerCore/Event/EEvent.cs +++ b/ServerCore/Event/EEvent.cs @@ -10,6 +10,10 @@ namespace ServerCore.Event { // 添加你自己需要的事件类型 OnUserJoin, - OnUserLeave + OnUserLeave, + + + //连接管理 + OnSocketDisconnect, } } diff --git a/ServerCore/Manager/ClientManager.cs b/ServerCore/Manager/ClientManager.cs index eeaf3a1..f3a8556 100644 --- a/ServerCore/Manager/ClientManager.cs +++ b/ServerCore/Manager/ClientManager.cs @@ -1,4 +1,5 @@ using AxibugProtobuf; +using ServerCore.Common.Enum; using ServerCore.Event; using System.Net.Sockets; using System.Timers; @@ -26,40 +27,51 @@ namespace ServerCore.Manager private long _RemoveOfflineCacheMin; + public ClientManager() + { + //事件 + EventSystem.Instance.RegisterEvent(EEvent.OnSocketDisconnect, OnSocketDisconnect); + } + #region 事件 + void OnSocketDisconnect(ServerType serverType, Socket socket) + { + if (serverType != ServerType.MainServer) + return; - + RemoveClientBySocket(socket); + } #endregion - public void Init(long ticktime, long RemoveOfflineCacheMin) - { - //换算成毫秒 - _RemoveOfflineCacheMin = RemoveOfflineCacheMin * 1000; - _ClientCheckTimer = new System.Timers.Timer(); - _ClientCheckTimer.Interval = ticktime; - _ClientCheckTimer.AutoReset = true; - _ClientCheckTimer.Elapsed += new ElapsedEventHandler(ClientCheckClearOffline_Elapsed); - _ClientCheckTimer.Enabled = true; - } + //public void Init(long ticktime, long RemoveOfflineCacheMin) + //{ + // //换算成毫秒 + // _RemoveOfflineCacheMin = RemoveOfflineCacheMin * 1000; + // _ClientCheckTimer = new System.Timers.Timer(); + // _ClientCheckTimer.Interval = ticktime; + // _ClientCheckTimer.AutoReset = true; + // _ClientCheckTimer.Elapsed += new ElapsedEventHandler(ClientCheckClearOffline_Elapsed); + // _ClientCheckTimer.Enabled = true; + //} public long GetNextUID() { return ++TestUIDSeed; } - private void ClientCheckClearOffline_Elapsed(object sender, ElapsedEventArgs e) - { - DateTime CheckDT = DateTime.Now.AddMinutes(-1 * _RemoveOfflineCacheMin); - ClientInfo[] OfflineClientlist = ClientList.Where(w => w.IsOffline == true && w.LogOutDT < CheckDT).ToArray(); + //private void ClientCheckClearOffline_Elapsed(object sender, ElapsedEventArgs e) + //{ + // DateTime CheckDT = DateTime.Now.AddMinutes(-1 * _RemoveOfflineCacheMin); + // ClientInfo[] OfflineClientlist = ClientList.Where(w => w.IsOffline == true && w.LogOutDT < CheckDT).ToArray(); - Console.WriteLine("开始清理离线过久的玩家的缓存"); - for (int i = 0; i < OfflineClientlist.Length; i++) - { - //to do 掉线处理 - RemoveClient(OfflineClientlist[i]); - } - GC.Collect(); - } + // Console.WriteLine("开始清理离线过久的玩家的缓存"); + // for (int i = 0; i < OfflineClientlist.Length; i++) + // { + // //to do 掉线处理 + // RemoveClient(OfflineClientlist[i]); + // } + // GC.Collect(); + //} //通用处理 @@ -118,6 +130,8 @@ namespace ServerCore.Manager /// public void RemoveClient(ClientInfo client) { + EventSystem.Instance.PostEvent(EEvent.OnUserLeave, client.UID); + lock (ClientList) { if (_DictUIDClient.ContainsKey(client.UID)) @@ -150,22 +164,21 @@ namespace ServerCore.Manager } - /// - /// 设置玩家离线 - /// - /// - public void SetClientOfflineForSocket(Socket sk) - { - if (!_DictSocketClient.ContainsKey(sk)) - return; + ///// + ///// 设置玩家离线 + ///// + ///// + //public void SetClientOfflineForSocket(Socket sk) + //{ + // if (!_DictSocketClient.ContainsKey(sk)) + // return; + // Console.WriteLine("标记玩家UID" + _DictSocketClient[sk].UID + "为离线"); + // _DictSocketClient[sk].IsOffline = true; + // _DictSocketClient[sk].LogOutDT = DateTime.Now; + // EventSystem.Instance.PostEvent(EEvent.OnUserLeave, _DictSocketClient[sk].UID); + //} - Console.WriteLine("标记玩家UID" + _DictSocketClient[sk].UID + "为离线"); - _DictSocketClient[sk].IsOffline = true; - _DictSocketClient[sk].LogOutDT = DateTime.Now; - EventSystem.Instance.PostEvent(EEvent.OnUserLeave, _DictSocketClient[sk].UID); - } - - public void RemoveClientForSocket(Socket sk) + public void RemoveClientBySocket(Socket sk) { if (!_DictSocketClient.ContainsKey(sk)) return; diff --git a/ServerCore/Manager/LoginManager.cs b/ServerCore/Manager/LoginManager.cs index 05d39b8..3792baa 100644 --- a/ServerCore/Manager/LoginManager.cs +++ b/ServerCore/Manager/LoginManager.cs @@ -23,7 +23,9 @@ namespace ServerCore.Manager Status = LoginResultStatus.Ok, RegDate = "", LastLoginDate = "", - Token = "" + Token = "", + UID = cinfo.UID, + NickName= cinfo.NickName, }); ServerManager.g_ClientMgr.ClientSend(cinfo, (int)CommandID.CmdLogin, (int)ErrorCode.ErrorOk, respData); diff --git a/ServerCore/Manager/ServerManager.cs b/ServerCore/Manager/ServerManager.cs index a3183b6..a7430cf 100644 --- a/ServerCore/Manager/ServerManager.cs +++ b/ServerCore/Manager/ServerManager.cs @@ -10,7 +10,7 @@ namespace ServerCore.Manager public static LogManager g_Log; public static LoginManager g_Login; public static ChatManager g_Chat; - public static P2PUserManager g_P2PMgr; + public static UserManager g_UserMgr; public static TcpTunnelClientManager g_TcpTunnelMgr; public static IOCPNetWork g_SocketMgr; public static IOCPNetWork g_SocketTcpTunnelMgr; @@ -18,16 +18,17 @@ namespace ServerCore.Manager public static void InitServer(int port, int tcptunnelport) { g_ClientMgr = new ClientManager(); + //g_ClientMgr.Init(10000, 10000); g_Log = new LogManager(); g_Login = new LoginManager(); g_Chat = new ChatManager(); - g_P2PMgr = new P2PUserManager(); + g_UserMgr = new UserManager(); g_TcpTunnelMgr = new TcpTunnelClientManager(); - g_SocketMgr = new IOCPNetWork(1024, 1024); + g_SocketMgr = new IOCPNetWork(1024, 1024,Common.Enum.ServerType.MainServer); g_SocketMgr.Init(); Console.WriteLine("监听:" + port); g_SocketMgr.Start(new IPEndPoint(IPAddress.Any.Address, port)); - g_SocketTcpTunnelMgr = new IOCPNetWork(1024, 1024); + g_SocketTcpTunnelMgr = new IOCPNetWork(1024, 1024, Common.Enum.ServerType.TcpTunnelServer); g_SocketTcpTunnelMgr.Init(); g_SocketTcpTunnelMgr.Start(new IPEndPoint(IPAddress.Any.Address, tcptunnelport)); Console.WriteLine("监听:" + tcptunnelport); diff --git a/ServerCore/Manager/TcpTunnelClientManager.cs b/ServerCore/Manager/TcpTunnelClientManager.cs index 7b97fbc..9e47a99 100644 --- a/ServerCore/Manager/TcpTunnelClientManager.cs +++ b/ServerCore/Manager/TcpTunnelClientManager.cs @@ -1,5 +1,6 @@ using AxibugProtobuf; using ServerCore.Common; +using ServerCore.Common.Enum; using ServerCore.Event; using ServerCore.NetWork; using System.Collections.Generic; @@ -22,15 +23,29 @@ namespace ServerCore.Manager public class TcpTunnelClientManager { + private System.Timers.Timer _ClientCheckTimer; + private long _RemoveOfflineCacheMin; public TcpTunnelClientManager() { + //消息注册 NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdTcptunnelHello, TcpTunnelHello); NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdTcptunnelDo, TcptunnelDo); + //事件注册 + EventSystem.Instance.RegisterEvent(EEvent.OnSocketDisconnect, OnSocketDisconnect); } private Dictionary _DictUID2Client = new Dictionary(); private Dictionary _DictScoket2Client = new Dictionary(); + #region 事件 + void OnSocketDisconnect(ServerType serverType, Socket socket) + { + if (serverType != ServerType.TcpTunnelServer) + return; + + RemoveClientBySocket(socket); + } + #endregion void AddClient(long UID,Socket _socket) { IPEndPoint ipEndPoint = (IPEndPoint)_socket.RemoteEndPoint; @@ -44,6 +59,7 @@ namespace ServerCore.Manager _Socket = _socket }; _DictScoket2Client[_socket] = cinfo; + _DictUID2Client[UID] = cinfo; } else { @@ -69,8 +85,7 @@ namespace ServerCore.Manager { if (_DictScoket2Client.ContainsKey(_socket)) { - _DictUID2Client.Remove(_DictScoket2Client[_socket].UID); - _DictScoket2Client.Remove(_socket); + RemoveClient(_DictScoket2Client[_socket].UID); } } @@ -98,13 +113,15 @@ namespace ServerCore.Manager ServerManager.g_Log.Debug("收到TcpTunnel 打洞端口Hello"); Protobuf_TcpTunnel_DoTunnel msg = ProtoBufHelper.DeSerizlize(reqData); TCPTunnelClientInfo Other = GetClient(msg.TargetUID); - if (Other == null) + + if (Other == null || msg.UID == msg.TargetUID) { Protobuf_TcpTunnel_DoTunnel_RESP respToErr = new Protobuf_TcpTunnel_DoTunnel_RESP(); - ClientSend(msg.UID, (int)CommandID.CmdTcptunnelDo, (int)ErrorCode.ErrorNotfand, ProtoBufHelper.Serizlize(respToErr)); + ClientSend(msg.UID, (int)CommandID.CmdTcptunnelDo, (int)ErrorCode.ErrorNotfind, ProtoBufHelper.Serizlize(respToErr)); return; } + //发给自己 TCPTunnelClientInfo mine = GetClient(msg.UID); Protobuf_TcpTunnel_DoTunnel_RESP respToMine = new Protobuf_TcpTunnel_DoTunnel_RESP() { @@ -114,9 +131,9 @@ namespace ServerCore.Manager OtherPort= Other.Port, TargetUID = msg.TargetUID, }; - ClientSend(msg.UID, (int)CommandID.CmdTcptunnelHello, (int)ErrorCode.ErrorOk, ProtoBufHelper.Serizlize(respToMine)); - + ClientSend(msg.UID, (int)CommandID.CmdTcptunnelDo, (int)ErrorCode.ErrorOk, ProtoBufHelper.Serizlize(respToMine)); + //发给对方 Protobuf_TcpTunnel_DoTunnel_RESP respToOther = new Protobuf_TcpTunnel_DoTunnel_RESP() { MyIP = Other.IP, @@ -125,11 +142,18 @@ namespace ServerCore.Manager OtherPort = mine.Port, TargetUID = msg.UID, }; - ClientSend(msg.TargetUID, (int)CommandID.CmdTcptunnelHello, (int)ErrorCode.ErrorOk, ProtoBufHelper.Serizlize(respToOther)); + ClientSend(msg.TargetUID, (int)CommandID.CmdTcptunnelDo, (int)ErrorCode.ErrorOk, ProtoBufHelper.Serizlize(respToOther)); + + //TODO 暂时服务器不断开,交由客户端收到后主动断开 + + //断开两边 + //mine._Socket.Close(); + //TCPTunnelClientInfo other = GetClient(msg.TargetUID); + //other._Socket.Close(); } /// - /// 错误 + /// /// /// /// @@ -142,5 +166,10 @@ namespace ServerCore.Manager ServerManager.g_SocketTcpTunnelMgr.SendToSocket(_DictUID2Client[UID]._Socket, CMDID, ERRCODE, data); } } + + public int GetOnlineClientCount() + { + return _DictUID2Client.Count(); + } } } diff --git a/ServerCore/Manager/P2PUserManager.cs b/ServerCore/Manager/UserManager.cs similarity index 97% rename from ServerCore/Manager/P2PUserManager.cs rename to ServerCore/Manager/UserManager.cs index 8152373..b4eb80d 100644 --- a/ServerCore/Manager/P2PUserManager.cs +++ b/ServerCore/Manager/UserManager.cs @@ -9,9 +9,9 @@ using System.Timers; namespace ServerCore.Manager { - public class P2PUserManager + public class UserManager { - public P2PUserManager() + public UserManager() { NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdUserOnlinelist, RecvGetUserList); @@ -21,7 +21,7 @@ namespace ServerCore.Manager } - #region + #region 事件 void OnUserJoin(long UID) { ServerManager.g_Log.Debug($"P2PUserManager->OnUserJoin UID->{UID}"); diff --git a/ServerCore/NetWork/IOCPNetWork.cs b/ServerCore/NetWork/IOCPNetWork.cs index be41f65..b45e8fb 100644 --- a/ServerCore/NetWork/IOCPNetWork.cs +++ b/ServerCore/NetWork/IOCPNetWork.cs @@ -1,15 +1,21 @@ using AxibugProtobuf; using HaoYueNet.ServerNetwork; +using ServerCore.Common.Enum; +using ServerCore.Event; using ServerCore.Manager; +using System.Net; using System.Net.Sockets; namespace ServerCore.NetWork { public class IOCPNetWork : SocketManager { - public IOCPNetWork(int numConnections, int receiveBufferSize) + ServerType mServerType; + public IOCPNetWork(int numConnections, int receiveBufferSize, ServerType serverType) : base(numConnections, receiveBufferSize) { + mServerType = serverType; + m_clientCount = 0; m_maxConnectNum = numConnections; m_revBufferSize = receiveBufferSize; @@ -38,22 +44,25 @@ namespace ServerCore.NetWork /// 业务数据 public override void DataCallBack(AsyncUserToken token, int CMDID, byte[] data) { - DataCallBackToOld(token.Socket, CMDID, data); + //DataCallBackToOld(token.Socket, CMDID, data); + ServerManager.g_Log.Debug("收到消息 CMDID =>" + CMDID + " 数据长度=>" + data.Length); + //抛出网络数据 + NetMsg.Instance.PostNetMsgEvent(CMDID, token.Socket, data); } - public void DataCallBackToOld(Socket sk, int CMDID, byte[] data) - { - ServerManager.g_Log.Debug("收到消息 CMDID =>" + CMDID + " 数据长度=>" + data.Length); - try - { - //抛出网络数据 - NetMsg.Instance.PostNetMsgEvent(CMDID, sk, data); - } - catch (Exception ex) - { - Console.WriteLine("逻辑处理错误:" + ex.ToString()); - } - } + //public void DataCallBackToOld(Socket sk, int CMDID, byte[] data) + //{ + // ServerManager.g_Log.Debug("收到消息 CMDID =>" + CMDID + " 数据长度=>" + data.Length); + // try + // { + // //抛出网络数据 + // NetMsg.Instance.PostNetMsgEvent(CMDID, sk, data); + // } + // catch (Exception ex) + // { + // Console.WriteLine("逻辑处理错误:" + ex.ToString()); + // } + //} /// /// 断开连接 @@ -61,10 +70,10 @@ namespace ServerCore.NetWork /// public override void OnClose(AsyncUserToken token) { - Console.WriteLine("断开连接"); + ServerManager.g_Log.Debug($"断开连接,ServerType->{mServerType} | {((IPEndPoint)token.Socket.LocalEndPoint).Address}"); + //ServerManager.g_ClientMgr.SetClientOfflineForSocket(token.Socket); //TODO 要删除不同的 - ServerManager.g_ClientMgr.SetClientOfflineForSocket(token.Socket); - s + EventSystem.Instance.PostEvent(EEvent.OnSocketDisconnect, mServerType, token.Socket); } } } diff --git a/ServerCore/NetWork/NetMsg.cs b/ServerCore/NetWork/NetMsg.cs index 39acb0f..be4eb1f 100644 --- a/ServerCore/NetWork/NetMsg.cs +++ b/ServerCore/NetWork/NetMsg.cs @@ -65,18 +65,19 @@ namespace ServerCore.NetWork public void PostNetMsgEvent(int cmd, Socket arg1, byte[] arg2) { List eventList = GetNetEventDicList(cmd); - if (eventList != null) + if (eventList == null) + return; + + for (int i = 0; i < eventList.Count; i++) { - foreach (Delegate callback in eventList) + Delegate callback = eventList[i]; + try { - try - { - ((Action)callback)(arg1, arg2); - } - catch (Exception e) - { - ServerManager.g_Log.Error(e.Message); - } + ((Action)callback)(arg1, arg2); + } + catch (Exception e) + { + ServerManager.g_Log.Error(e.Message); } } }