private void ProcessNetStatus(CONNECT_STATUS st, object o) { D("processDiscovery : st : " + st + "object : " + o + "ConnectStatusCallBackHandler:" + UpdateUiHandler); UpdateUiHandler?.Invoke(st, new object[] { o }); switch (st) { case CONNECT_STATUS.DISCOVERY_INIT_OK: break; case CONNECT_STATUS.DISCOVERY_GET_PCB: _PcbTcpServerEndPoint = (IPEndPoint)o; _TcpCmdClient = new TcpCmdClient(_PcbTcpServerEndPoint); _TcpCmdClient.TcpStatusChangeHandler += ProcessNetStatus; break; case CONNECT_STATUS.TCP_CONNECT_OK: //network is ok. so I open TcpServer. if (ProgramInfo.PCIPaddr != null && !_hasFtprun) { FtpInstanceServer.instance.Start(ProgramInfo.FtpServerRootPath, ProgramInfo.PCIPaddr); FtpInstanceServer.instance.FtpServerStatusChangeeHandler += ProcessNetStatus; _hasFtprun = true; } break; case CONNECT_STATUS.TCP_RECEIVE_MSG: _RxMsgDispatch.ProcessRxMsg((string)o); break; default: break; } }
//check the packet is port 808 void device_OnPacketArrival(object sender, CaptureEventArgs e) { if (e.Packet.Data.Length < 20) return; Packet p = null; TcpPacket tcp = null; try { p = Packet.ParsePacket(e.Packet.LinkLayerType, e.Packet.Data); tcp = TcpPacket.GetEncapsulated(p); } catch { return; } if (tcp == null) return; ushort portToFind = 808; if (tcp.DestinationPort == portToFind || tcp.DestinationPort == portToFind) { UpdateUiHandler handler = new UpdateUiHandler(SetCommunicating); Object[] args = new Object[] { true }; this.BeginInvoke(handler, args); } }
//check the packet is port 808 void device_OnPacketArrival(object sender, CaptureEventArgs e) { if (e.Packet.Data.Length < 20) { return; } Packet p = null; TcpPacket tcp = null; try { p = Packet.ParsePacket(e.Packet.LinkLayerType, e.Packet.Data); tcp = TcpPacket.GetEncapsulated(p); } catch { return; } if (tcp == null) { return; } ushort portToFind = 808; if (tcp.DestinationPort == portToFind || tcp.DestinationPort == portToFind) { UpdateUiHandler handler = new UpdateUiHandler(SetCommunicating); Object[] args = new Object[] { true }; this.BeginInvoke(handler, args); } }
public static void Switch(GPCMClient client, Dictionary <string, string> recv, GPCMConnectionUpdate OnSuccessfulLogin, GPCMStatusChanged OnStatusChanged) { string command = recv.Keys.First(); try { switch (command) { case "inviteto": InviteToHandler.AddFriends(client, recv); break; case "login": LoginHandler.ProcessLogin(client, recv, OnSuccessfulLogin, OnStatusChanged); break; case "getprofile": GetProfileHandler.SendProfile(client, recv); break; case "addbuddy": AddBuddyHandler.Addfriends(client, recv); break; case "delbuddy": DelBuddyHandler.Handle(client, recv); break; case "updateui": UpdateUiHandler.UpdateUi(client, recv); break; case "updatepro": UpdateProHandler.UpdateUser(client, recv); break; case "registernick": RegisterNickHandler.RegisterNick(client, recv); break; case "logout": client.DisconnectByReason(DisconnectReason.NormalLogout); break; case "status": StatusHandler.UpdateStatus(client, recv, OnStatusChanged); break; case "newuser": NewUserHandler.NewUser(client, recv); break; case "ka": KAHandler.SendKeepAlive(client); break; default: LogWriter.Log.Write("[GPCM] received unknown data " + command, LogLevel.Debug); GameSpyUtils.SendGPError(client, GPErrorCode.General, "An invalid request was sended."); break; } } catch (Exception e) { LogWriter.Log.WriteException(e); } }