本文整理汇总了C#中IClient.Disconnect方法的典型用法代码示例。如果您正苦于以下问题:C# IClient.Disconnect方法的具体用法?C# IClient.Disconnect怎么用?C# IClient.Disconnect使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IClient
的用法示例。
在下文中一共展示了IClient.Disconnect方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Main
private static void Main(string[] args)
{
string clientName = "Console" + Guid.NewGuid().ToString().Substring(0, 5);
Log.Default.Logger = new NLogger();
Log.Default.Initialize(@"D:\TEMP\LOG\", String.Format("TETRINET2_CLIENT_{0}.LOG", clientName));
IFactory factory = new Factory();
_client = new Client(factory);
_client.SetVersion(1, 0);
ConsoleUI ui = new ConsoleUI(_client);
IGameController controller = new GameController.GameController(_client);
//_client.ConnectionLost += OnConnectionLost;
_client.Connect("net.tcp://localhost:7788/TetriNET2Client", clientName, "team1");
bool stopped = false;
while (!stopped)
{
if (Console.KeyAvailable)
{
ConsoleKeyInfo cki = Console.ReadKey(true);
switch (cki.Key)
{
default:
DisplayHelp();
break;
case ConsoleKey.O:
_client.Connect("net.tcp://localhost:7788/TetriNET2Client", clientName, "team1");
break;
case ConsoleKey.Z:
_client.Disconnect();
break;
case ConsoleKey.X:
_client.Disconnect();
stopped = true;
break;
case ConsoleKey.C:
_client.GetClientList();
break;
case ConsoleKey.G:
_client.GetGameList();
break;
case ConsoleKey.L:
_client.GetGameClientList();
break;
case ConsoleKey.J:
_client.CreateAndJoinGame("GAME" + Guid.NewGuid().ToString().Substring(0, 5), null, GameRules.Standard, false);
break;
case ConsoleKey.R:
_client.JoinRandomGame(false);
break;
case ConsoleKey.S:
_client.StartGame();
break;
case ConsoleKey.T:
_client.StopGame();
break;
// Game controller
case ConsoleKey.LeftArrow:
controller.KeyDown(Commands.Left);
controller.KeyUp(Commands.Left);
break;
case ConsoleKey.RightArrow:
controller.KeyDown(Commands.Right);
controller.KeyUp(Commands.Right);
break;
case ConsoleKey.DownArrow:
controller.KeyDown(Commands.Down);
controller.KeyUp(Commands.Down);
break;
case ConsoleKey.H:
controller.KeyDown(Commands.Hold);
controller.KeyUp(Commands.Hold);
break;
case ConsoleKey.Spacebar:
controller.KeyDown(Commands.Drop);
controller.KeyUp(Commands.Drop);
break;
case ConsoleKey.UpArrow:
controller.KeyDown(Commands.RotateClockwise);
controller.KeyUp(Commands.RotateClockwise);
break;
case ConsoleKey.D:
controller.KeyDown(Commands.DiscardFirstSpecial);
controller.KeyUp(Commands.DiscardFirstSpecial);
break;
case ConsoleKey.NumPad1:
case ConsoleKey.D1:
controller.KeyDown(Commands.UseSpecialOn1);
controller.KeyUp(Commands.UseSpecialOn1);
break;
case ConsoleKey.NumPad2:
case ConsoleKey.D2:
controller.KeyDown(Commands.UseSpecialOn2);
controller.KeyUp(Commands.UseSpecialOn2);
//.........这里部分代码省略.........
示例2: HandleReconnectChallenge
public static void HandleReconnectChallenge(IClient client, IncomingAuthPacket packet)
{
// structure is the same as AuthenticationLogOnChallenge
Contract.Requires(client != null);
Contract.Requires(packet != null);
packet.ReadByte(); // unk
packet.ReadInt16(); // size
packet.ReadFourCC(); // gameName
packet.ReadByte(); // version1
packet.ReadByte(); // version2
packet.ReadByte(); // version3
packet.ReadInt16(); // build
packet.ReadFourCC(); // platform
packet.ReadFourCC(); // os
packet.ReadFourCC(); // country
packet.ReadInt32(); // timeZoneBias
packet.ReadInt32(); // ip
var usernameLength = packet.ReadByte();
var usernameBytes = packet.ReadBytes(usernameLength);
Encoding.ASCII.GetString(usernameBytes); // username
// TODO fetch this from the database (or some other persistent storage)
BigInteger sessionKey = null;
if (sessionKey == null) {
client.Disconnect();
return;
}
//BigInteger rand = new BigInteger(new FastRandom(), 16 * 8);
//SendReconnectChallengeSuccess(client, rand);
//client.UserData.ReconnectRand = rand;
//client.UserData.Username = username;
}
示例3: HandleReconnectProof
public static void HandleReconnectProof(IClient client, IncomingAuthPacket packet)
{
// MD5 hash of { AccountName, byte[16] random data }
BigInteger r1 = packet.ReadBigInteger(16);
// SHA1 hash of { AccountName, MD5 from above, ReconnectProof, SessionKey }
BigInteger r2 = packet.ReadBigInteger(20);
// SHA1 hash of { MD5 from above, byte[16] of 0's }
var r3 = packet.ReadBigInteger(20); // r3Data
var numKeys = packet.ReadByte();
if (numKeys > 0)
{
// only initialize the array if we actually HAVE keys
AuthLogonKey[] keys = new AuthLogonKey[numKeys];
for (byte key = 0; key < numKeys; key++)
{
var unk1 = packet.ReadInt16();
var unk2 = packet.ReadInt32();
var unk3 = packet.ReadBytes(4);
var shaHash = packet.ReadBytes(20);
keys[key] = new AuthLogonKey(unk1, unk2, unk3, shaHash);
}
}
SRPServer srpData = client.UserData.SRP;
string username = client.UserData.Username;
BigInteger rand = client.UserData.ReconnectRand;
// TODO fetch this from the database (or some other persistent storage)
//BigInteger sessionKey = null ?? new BigInteger(0);
BigInteger hash = srpData.Hash(new HashDataBroker(Encoding.ASCII.GetBytes(username)), r1, rand);
if (hash == r2)
{
SendReconnectProofSuccess(client);
client.AddPermission(new AuthenticatedPermission());
}
else
client.Disconnect();
}
示例4: HandleReconnectChallenge
public static void HandleReconnectChallenge(IClient client, IncomingAuthPacket packet)
{
// structure is the same as AuthenticationLogonChallenge
Contract.Requires(client != null);
Contract.Requires(packet != null);
var unk = packet.ReadByte();
var size = packet.ReadInt16();
var gameName = packet.ReadFourCC();
var version1 = packet.ReadByte();
var version2 = packet.ReadByte();
var version3 = packet.ReadByte();
var build = packet.ReadInt16();
var platform = packet.ReadFourCC();
var os = packet.ReadFourCC();
var country = packet.ReadFourCC();
var timezoneBias = packet.ReadInt32();
var ip = packet.ReadInt32();
var usernameLength = packet.ReadByte();
var usernameBytes = packet.ReadBytes(usernameLength);
var username = Encoding.ASCII.GetString(usernameBytes);
// TODO fetch this from the database (or some other persistent storage)
BigInteger sessionKey = null;
if (sessionKey == null) {
client.Disconnect();
return;
}
BigInteger rand = new BigInteger(new FastRandom(), 16 * 8);
SendReconnectChallengeSuccess(client, rand);
client.UserData.ReconnectRand = rand;
client.UserData.Username = username;
}