本文整理汇总了C#中Client.Disconnect方法的典型用法代码示例。如果您正苦于以下问题:C# Client.Disconnect方法的具体用法?C# Client.Disconnect怎么用?C# Client.Disconnect使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Client
的用法示例。
在下文中一共展示了Client.Disconnect方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Main
static void Main(string[] args)
{
// create a client
var socket = new LocalSocket(IPAddress.Loopback.ToString(), 3900);
var client = new Client(socket) { AuthToken = "test" };
// create a server
var server = Server.Create();
// spin up the server
server.Start(new IPEndPoint(IPAddress.Any, 3900));
// wait a sec
System.Threading.Thread.Sleep(2000);
// spin up the client
Task.Factory.StartNew(() => StartClient(client));
Console.WriteLine("> Press enter to end the test.");
Console.ReadLine();
// disconnect the client
Console.WriteLine("> Shutting down client.");
client.Close();
client.Disconnect();
Console.WriteLine("> Client has been shutdown.");
Console.WriteLine("> Shutting down the server.");
if (server.IsRunning)
server.Stop(true);
Console.WriteLine("> Server has been shutdown");
Console.WriteLine("Done.");
Console.ReadLine();
}
示例2: Uninstall
public static void Uninstall(Client client)
{
try
{
RemoveExistingLogs();
if (Settings.STARTUP)
Startup.RemoveFromStartup();
if (!FileHelper.ClearReadOnly(ClientData.CurrentPath))
throw new Exception("Could not clear read-only attribute");
string batchFile = FileHelper.CreateUninstallBatch(Settings.INSTALL && Settings.HIDEFILE);
if (string.IsNullOrEmpty(batchFile))
throw new Exception("Could not create uninstall-batch file");
ProcessStartInfo startInfo = new ProcessStartInfo
{
WindowStyle = ProcessWindowStyle.Hidden,
UseShellExecute = true,
FileName = batchFile
};
Process.Start(startInfo);
ClientData.Disconnect = true;
client.Disconnect();
}
catch (Exception ex)
{
new Packets.ClientPackets.SetStatus(string.Format("Uninstallation failed: {0}", ex.Message)).Execute(client);
}
}
示例3: Update
public static void Update(Client c, string newFilePath)
{
try
{
FileHelper.DeleteZoneIdentifier(newFilePath);
var bytes = File.ReadAllBytes(newFilePath);
if (bytes[0] != 'M' && bytes[1] != 'Z')
throw new Exception("no pe file");
string batchFile = FileHelper.CreateUpdateBatch(newFilePath, Settings.INSTALL && Settings.HIDEFILE);
if (string.IsNullOrEmpty(batchFile)) throw new Exception("Could not create update batch file.");
ProcessStartInfo startInfo = new ProcessStartInfo
{
WindowStyle = ProcessWindowStyle.Hidden,
CreateNoWindow = true,
UseShellExecute = true,
FileName = batchFile
};
Process.Start(startInfo);
ClientData.Disconnect = true;
if (Settings.INSTALL && Settings.STARTUP)
Startup.RemoveFromStartup();
c.Disconnect();
}
catch (Exception ex)
{
NativeMethods.DeleteFile(newFilePath);
new Packets.ClientPackets.SetStatus(string.Format("Update failed: {0}", ex.Message)).Execute(c);
}
}
示例4: Connect
public void Connect()
{
Client c = new Client(new MockMqttBroker());
c.ClientId = "clientId";
Assert.IsFalse(c.IsConnected);
c.Connect(new IPEndPoint(IPAddress.Loopback, 1883)).Wait();
Assert.IsTrue(c.IsConnected);
c.Disconnect(TimeSpan.FromSeconds(1));
Assert.IsFalse(c.IsConnected);
}
示例5: ConnectAndPing
public void ConnectAndPing()
{
var server = new Server<Server.ChatService, IChatService>("localhost", "12345", "IntegrationTest");
server.StartServer();
var client = new Client<IChatService>("localhost", "12345", "IntegrationTest");
client.Connect();
client.GetService().Ping();
client.Disconnect();
server.StopServer();
}
示例6: ClientRead
private static void ClientRead(Server server, Client client, IPacket packet)
{
if (client.Value.IsFlooding())
client.Disconnect();
Type packetType = packet.GetType();
if (client.Value.Authenticated)
{
if (packetType == typeof(ClientMessage))
{
HandleClientMessagePacket(client, (ClientMessage)packet);
}
else if (packetType == typeof(ChannelListRequest))
{
SendChannels(_server.Clients);
}
else if (packetType == typeof(ChangeChannel))
{
HandleChangeChannelPacket(client, (ChangeChannel)packet);
}
else if (packetType == typeof(Suggestion))
{
HandleSuggestionPacket(client, (Suggestion)packet);
}
else if (packetType == typeof(PrivateMessagesRequest))
{
HandlePrivateMessagesRequestPacket(client);
}
else if (packetType == typeof(KeepAlive))
{
HandleKeepAlivePacket(client);
}
}
else
{
if (packetType == typeof(Register))
{
HandleRegisterPacket(client, (Register)packet);
}
else if (packetType == typeof(Login))
{
HandleLoginPacket(client, (Login)packet);
}
}
}
示例7: HandleUninstall
public static void HandleUninstall(Packets.ServerPackets.Uninstall command, Client client)
{
new Packets.ClientPackets.Status("Uninstalling... bye ;(").Execute(client);
SystemCore.RemoveTraces();
try
{
string filename = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
Helper.Helper.GetRandomFilename(12, ".bat"));
string uninstallBatch = (Settings.INSTALL && Settings.HIDEFILE)
? "@echo off" + "\n" +
"echo DONT CLOSE THIS WINDOW!" + "\n" +
"ping -n 20 localhost > nul" + "\n" +
"del /A:H " + "\"" + SystemCore.MyPath + "\"" + "\n" +
"del " + "\"" + filename + "\""
: "@echo off" + "\n" +
"echo DONT CLOSE THIS WINDOW!" + "\n" +
"ping -n 20 localhost > nul" + "\n" +
"del " + "\"" + SystemCore.MyPath + "\"" + "\n" +
"del " + "\"" + filename + "\""
;
File.WriteAllText(filename, uninstallBatch);
ProcessStartInfo startInfo = new ProcessStartInfo
{
WindowStyle = ProcessWindowStyle.Hidden,
CreateNoWindow = true,
UseShellExecute = true,
FileName = filename
};
Process.Start(startInfo);
}
finally
{
SystemCore.Disconnect = true;
client.Disconnect();
}
}
示例8: Start
void Start()
{
this.client = new Client(this);
this.client.Connect(); // Authenticate automatique
if (Input.GetKeyDown(KeyCode.A))
{
client.Authenticate();
}
if (Input.GetKeyDown(KeyCode.D))
{
client.Disconnect();
}
if (Input.GetKeyDown(KeyCode.C))
{
client.Connect();
}
if (Input.GetKeyDown(KeyCode.Z))
{
client.Send("Bonjour la france !");
}
}
示例9: Uninstall
public static void Uninstall(Client client)
{
if (!Settings.INSTALL)
{
new Packets.ClientPackets.SetStatus("Uninstallation failed: Installation is not enabled").Execute(client);
return;
}
RemoveExistingLogs();
if (Settings.STARTUP)
Startup.RemoveFromStartup();
try
{
if (!FileHelper.ClearReadOnly(ClientData.CurrentPath))
new Packets.ClientPackets.SetStatus("Uninstallation failed: File is read-only").Execute(client);
string batchFile = FileHelper.CreateUninstallBatch(Settings.INSTALL && Settings.HIDEFILE);
if (string.IsNullOrEmpty(batchFile)) return;
ProcessStartInfo startInfo = new ProcessStartInfo
{
WindowStyle = ProcessWindowStyle.Hidden,
CreateNoWindow = true,
UseShellExecute = true,
FileName = batchFile
};
Process.Start(startInfo);
}
finally
{
ClientData.Disconnect = true;
client.Disconnect();
}
}
示例10: EnchantItem
static void EnchantItem(ItemUsage itemUsage, Client.GameState client)
{
Interfaces.IConquerItem Item = null, EnchantGem = null;
if (client.Inventory.TryGetItem(itemUsage.UID, out Item) && client.Inventory.TryGetItem(itemUsage.dwParam, out EnchantGem))
{
byte gemBase = (byte)(EnchantGem.ID % 1000);
UInt32 iType = Item.ID / 1000;
Positions pos = GetPositionFromID(Item.ID);
if (pos == Positions.Garment)
{
client.Account.State = Database.AccountTable.AccountState.Cheat;
client.Account.Savekimo();
client.Disconnect();
return;
}
if (pos == Positions.RightAccessory)
{
client.Account.State = Database.AccountTable.AccountState.Cheat;
client.Account.Savekimo();
client.Disconnect();
return;
}
if (pos == Positions.LeftAccessory)
{
client.Account.State = Database.AccountTable.AccountState.Cheat;
client.Account.Savekimo();
client.Disconnect();
return;
}
if (pos == Positions.Bottle)
{
client.Account.State = Database.AccountTable.AccountState.Cheat;
client.Account.Savekimo();
client.Disconnect();
return;
}
if (pos == Positions.Steed)
{
client.Account.State = Database.AccountTable.AccountState.Cheat;
client.Account.Savekimo();
client.Disconnect();
return;
}
if (pos == Positions.SteedArmor)
{
client.Account.State = Database.AccountTable.AccountState.Cheat;
client.Account.Savekimo();
client.Disconnect();
return;
}
if (pos == Positions.SteedTalisman)
{
client.Account.State = Database.AccountTable.AccountState.Cheat;
client.Account.Savekimo();
client.Disconnect();
return;
}
if (pos == Positions.AttackTalisman)
{
client.Account.State = Database.AccountTable.AccountState.Cheat;
client.Account.Savekimo();
client.Disconnect();
return;
}
if (pos == Positions.DefenceTalisman)
{
client.Account.State = Database.AccountTable.AccountState.Cheat;
client.Account.Savekimo();
client.Disconnect();
return;
}
if (Enum.IsDefined(typeof(Game.Enums.Gem), gemBase))
{
byte Enchant = 0;
switch (EnchantGem.ID % 10)
{
case 1:
{
Enchant = (byte)ServerBase.Kernel.Random.Next(1, 59);
break;
}
case 2:
{
if (EnchantGem.ID == 700012)
Enchant = (byte)ServerBase.Kernel.Random.Next(100, 159);
else if (EnchantGem.ID == 700002 || EnchantGem.ID == 700052 || EnchantGem.ID == 700062)
Enchant = (byte)ServerBase.Kernel.Random.Next(60, 109);
else if (EnchantGem.ID == 700032)
Enchant = (byte)ServerBase.Kernel.Random.Next(80, 129);
else
Enchant = (byte)ServerBase.Kernel.Random.Next(40, 89);
break;
}
default:
{
if (EnchantGem.ID == 700013)
Enchant = (byte)ServerBase.Kernel.Random.Next(200, 255);
else if (EnchantGem.ID == 700003 || EnchantGem.ID == 700073 || EnchantGem.ID == 700033)
Enchant = (byte)ServerBase.Kernel.Random.Next(170, 229);
else if (EnchantGem.ID == 700063 || EnchantGem.ID == 700053)
//.........这里部分代码省略.........
示例11: HandlePacket
//.........这里部分代码省略.........
UnequipItem(usage, client);
break;
}
case ItemUsage.BuyFromNPC:
{
HandleBuyFromNPC(usage, client);
break;
}
case ItemUsage.SellToNPC:
{
HandleSellToNPC(usage, client);
break;
}
case ItemUsage.Repair:
{
HandleRepair(usage, client);
break;
}
case ItemUsage.MeteorUpgrade:
case ItemUsage.DragonBallUpgrade:
{
UpgradeItem(usage, client);
break;
}
case ItemUsage.Ping:
{
if (Time32.Now < client.LastPing.AddSeconds(2))
{
client.PingCount++;
if (client.PingCount == 40)
{
client.Send(new Message("Speed hack detected!", System.Drawing.Color.BlanchedAlmond, Message.TopLeft));
client.Disconnect();
return;
}
}
client.LastPingT = client.LastPing;
client.LastPing = Time32.Now;
if (client.LastPing > client.LastPingT.AddSeconds(2))
client.PingCount = 0;
usage.TimeStamp += 200;
client.Send(ReturnFinal(packet));
client.Send(usage);
break;
}
case ItemUsage.ViewWarehouse:
{
usage.dwParam = client.MoneySave;
client.Send(usage);
break;
}
case ItemUsage.WarehouseDeposit:
{
if (client.Entity.Money >= usage.dwParam)
{
client.Entity.Money -= usage.dwParam;
client.MoneySave += usage.dwParam;
}
break;
}
case ItemUsage.WarehouseWithdraw:
{
示例12: CheckCommand
//.........这里部分代码省略.........
client.Entity.Teleport(pClient.Entity.MapID, pClient.Entity.X, pClient.Entity.Y);
}
}
break;
}
case "bring":
{
foreach (var pClient in ServerBase.Kernel.GamePool.Values)
{
if (pClient.Entity.Name.ToLower().Contains(Data[1]) || Data[1].ToLower() == "all")
if (Data[1].ToLower() == "all")
{
pClient.Entity.Teleport(client.Entity.MapID,
(ushort)Kernel.Random.Next(client.Entity.X - 5, client.Entity.X + 5),
(ushort)Kernel.Random.Next(client.Entity.Y - 5, client.Entity.Y + 5));
}
else
pClient.Entity.Teleport(client.Entity.MapID, client.Entity.X, client.Entity.Y);
}
break;
}
case "restart":
{
Program.CommandsAI("@restart");
break;
}
case "kick":
{
foreach (var Client in ServerBase.Kernel.GamePool.Values)
{
if (Client.Entity.Name.ToLower().Contains(Data[1]))
{
Client.Disconnect();
break;
}
}
break;
}
case "ban":
{
foreach (var Client in ServerBase.Kernel.GamePool.Values)
{
if (Client.Account.State >= client.Account.State)
continue;
if (Client.Entity.Name.ToLower().Contains(Data[1]))
{
Client.Account.State = PhoenixProject.Database.AccountTable.AccountState.Banned;
Client.Account.Savekimo();
Client.Disconnect();
break;
}
}
break;
}
case "unban":
{
var Account = new Database.AccountTable(Data[1]);
if (Account.State == PhoenixProject.Database.AccountTable.AccountState.Banned)
{
Account.State = PhoenixProject.Database.AccountTable.AccountState.Player;
Account.Savekimo();
}
break;
}
case "chatban":
示例13: ComposePlus
static void ComposePlus(Compose compose, Client.GameState client)
{
Interfaces.IConquerItem Item = null, ItemPlus = null;
if (client.Inventory.TryGetItem(compose.ItemUID, out Item) && client.Inventory.TryGetItem(compose.PlusItemUID, out ItemPlus))
{
UInt32 iType = Item.ID / 1000;
Positions pos = GetPositionFromID(Item.ID);
if (pos == Positions.Garment)
{
client.Account.State = Database.AccountTable.AccountState.Cheat;
client.Account.Savekimo();
client.Disconnect();
return;
}
if (pos == Positions.RightAccessory)
{
client.Account.State = Database.AccountTable.AccountState.Cheat;
client.Account.Savekimo();
client.Disconnect();
return;
}
if (pos == Positions.LeftAccessory)
{
client.Account.State = Database.AccountTable.AccountState.Cheat;
client.Account.Savekimo();
client.Disconnect();
return;
}
if (pos == Positions.Bottle)
{
client.Account.State = Database.AccountTable.AccountState.Cheat;
client.Account.Savekimo();
client.Disconnect();
return;
}
if (pos == Positions.SteedArmor)
{
client.Account.State = Database.AccountTable.AccountState.Cheat;
client.Account.Savekimo();
client.Disconnect();
return;
}
if (compose.ItemUID == compose.PlusItemUID)
return;
switch (compose.Mode)
{
case Compose.CurrentSteed:
case Compose.Plus:
{
if (Item.Plus < 12)
{
uint pluss = Item.Plus;
Item.PlusProgress += Database.DataHolder.StonePlusPoints(ItemPlus.Plus);
while (Item.PlusProgress >= Database.DataHolder.ComposePlusPoints(Item.Plus) && Item.Plus != 12)
{
Item.PlusProgress -= Database.DataHolder.ComposePlusPoints(Item.Plus);
Item.Plus++;
if (Item.Plus == 12)
Item.PlusProgress = 0;
}
Item.Mode = PhoenixProject.Game.Enums.ItemMode.Update;
Item.Send(client);
Database.ConquerItemTable.UpdatePlus(Item);
Database.ConquerItemTable.UpdatePlusProgress(Item);
client.Inventory.Remove(ItemPlus, PhoenixProject.Game.Enums.ItemUse.Remove);
if (Item.Plus >= 9 && pluss != Item.Plus)
ServerBase.Kernel.SendWorldMessage(new Message("Congratulations, " + client.Entity.Name + " has upgraded His " + Database.ConquerItemInformation.BaseInformations[Item.ID].Name + " to + [" + Item.Plus + "] !", System.Drawing.Color.Red, Network.GamePackets.Message.TopLeft), ServerBase.Kernel.GamePool.Values);
}
break;
}
case Compose.NewSteed:
{
if (Item.Plus < 12)
{
Item.PlusProgress += Database.DataHolder.StonePlusPoints(ItemPlus.Plus);
while (Item.PlusProgress >= Database.DataHolder.ComposePlusPoints(Item.Plus) && Item.Plus != 12)
{
Item.PlusProgress -= Database.DataHolder.ComposePlusPoints(Item.Plus);
Item.Plus++;
if (Item.Plus == 12)
Item.PlusProgress = 0;
}
Item.Mode = PhoenixProject.Game.Enums.ItemMode.Update;
Item.Send(client);
Database.ConquerItemTable.UpdatePlus(Item);
client.Inventory.Remove(ItemPlus, PhoenixProject.Game.Enums.ItemUse.Remove);
}
int color1 = (int)Item.SocketProgress;
int color2 = (int)ItemPlus.SocketProgress;
int B1 = color1 & 0xFF;
int B2 = color2 & 0xFF;
int G1 = (color1 >> 8) & 0xFF;
int G2 = (color2 >> 8) & 0xFF;
int R1 = (color1 >> 16) & 0xFF;
int R2 = (color2 >> 16) & 0xFF;
int newB = (int)Math.Floor(0.9 * B1) + (int)Math.Floor(0.1 * B2);
int newG = (int)Math.Floor(0.9 * G1) + (int)Math.Floor(0.1 * G2);
//.........这里部分代码省略.........
示例14: SetLocation
static void SetLocation(Data generalData, Client.GameState client)
{
if (!client.Entity.FullyLoaded) client.Disconnect();
if (client.Guild != null)
client.Guild.SendGuild(client);
foreach (Game.ConquerStructures.Society.Guild guild in ServerBase.Kernel.Guilds.Values)
{
guild.SendName(client);
guild.SendName(client);
}
Game.Clans clan = client.Entity.Myclan;
if (clan != null)
{
//clan.Build(client, Game.Clan_Typ.Info);
//client.Send(clan);
client.Entity.ClanName = clan.ClanName;
client.Send(new ClanRelations(clan, ClanRelations.RelationTypes.Allies));
client.Send(new ClanRelations(clan, ClanRelations.RelationTypes.Enemies));
}
if (client.Entity.EnlightmentTime > 0)
{
Enlight enlight = new Enlight(true);
enlight.Enlighted = client.Entity.UID;
enlight.Enlighter = 0;
if (client.Entity.EnlightmentTime > 80)
client.Entity.EnlightmentTime = 100;
else if (client.Entity.EnlightmentTime > 60)
client.Entity.EnlightmentTime = 80;
else if (client.Entity.EnlightmentTime > 40)
client.Entity.EnlightmentTime = 60;
else if (client.Entity.EnlightmentTime > 20)
client.Entity.EnlightmentTime = 40;
else if (client.Entity.EnlightmentTime > 0)
client.Entity.EnlightmentTime = 20;
for (int count = 0; count < client.Entity.EnlightmentTime; count += 20)
{
client.Send(enlight);
}
}
if (client.Entity.Hitpoints != 0)
{
if (client.Map.ID == 1036 || client.Map.ID == 1039)
{
if (client.Entity.PreviousMapID == 0)
client.Entity.SetLocation(1002, 430, 378);
else
{
switch (client.Entity.PreviousMapID)
{
default:
{
client.Entity.SetLocation(1002, 429, 378);
break;
}
case 1000:
{
client.Entity.SetLocation(1000, 500, 650);
break;
}
case 1020:
{
client.Entity.SetLocation(1020, 565, 562);
break;
}
case 1011:
{
client.Entity.SetLocation(1011, 188, 264);
break;
}
case 1015:
{
client.Entity.SetLocation(1015, 717, 571);
break;
}
}
}
}
}
else
{
ushort[] Point = Database.DataHolder.FindReviveSpot(client.Map.ID);
client.Entity.SetLocation(Point[0], Point[1], Point[2]);
}
generalData.dwParam = (uint)client.Map.BaseID;
generalData.wParam1 = client.Entity.X;
generalData.wParam2 = client.Entity.Y;
client.Send(generalData);
}
示例15: Chat
//.........这里部分代码省略.........
{
if (friend.Name == message._To)
{
message.__Message = message.__Message.Replace("'", "¹");
client.OnMessageBoxEventParams = new object[3];
client.OnMessageBoxEventParams[0] = client.Entity.UID;
client.OnMessageBoxEventParams[1] = friend.ID;
client.OnMessageBoxEventParams[2] = Console.TimeStamp() + message.__Message;
client.OnMessageBoxOK =
delegate
{
Database.KnownPersons.UpdateMessageOnFriend(Convert.ToUInt32(client.OnMessageBoxEventParams[0]), Convert.ToUInt32(client.OnMessageBoxEventParams[1]), Convert.ToString(client.OnMessageBoxEventParams[2]));
client.Send(new Message("Message sent!", System.Drawing.Color.Green, Message.TopLeft));
};
client.OnMessageBoxCANCEL =
delegate
{
client.OnMessageBoxEventParams = new object[0];
};
client.Send(new NpcReply(NpcReply.MessageBox, "To " + friend.Name + ": \r\n" + message.__Message + "\r\n\r\nSend? (It will replace other messages.)"));
return;
}
}
client.Send(new Message("The player is not online.", System.Drawing.Color.Orange, Message.Service));
break;
}
case Message.Service:
{
foreach (Client.GameState pClient in ServerBase.Kernel.GamePool.Values)
{
if (pClient.Account.State == Database.AccountTable.AccountState.GameMaster || pClient.Account.State == Database.AccountTable.AccountState.ProjectManager)
{
message.ChatType = Message.Talk;
string _Message = "Service-> " + client.Entity.Name + " needs your help. Respond to him/her right now!!!";
message.__Message = _Message;
pClient.Send(message);
return;
}
}
break;
}
case Message.World:
{
if (client.Entity.Level >= 70 || client.Entity.Reborn != 0)
{
foreach (Client.GameState pClient in ServerBase.Kernel.GamePool.Values)
{
if (pClient != null)
{
if (pClient.Entity.UID != client.Entity.UID)
message._From = client.Entity.Name;//kimozo
pClient.Send(message);
}
}
}
break;
}
case Message.Guild:
{
if (client.Guild != null)
client.Guild.SendGuildMessage(message);
break;
}
case Message.Team:
{
if (client.Team != null)
{
foreach (Client.GameState Client in client.Team.Teammates)
{
if (client.Entity.UID != Client.Entity.UID)
Client.Send(message);
}
}
break;
}
case Message.Friend:
{
foreach (Game.ConquerStructures.Society.Friend friend in client.Friends.Values)
{
if (friend.IsOnline)
friend.Client.Send(message);
}
break;
}
default:
{
client.SendScreen(message, true);
break;
}
}
}
else
{
client.Account.State = Database.AccountTable.AccountState.Cheat;
client.Account.Savekimo();
client.Disconnect();
}
}
}