public static bool Connect(string ip, int port) { _client = new eSock.Client(); if (!_client.Connect(ip, port)) { return(false); } try { object[] data = _client.Send((byte)NetworkHeaders.Handshake); if ((NetworkHeaders)data[0] != NetworkHeaders.AcceptHandshake) { return(false); } string encryptionKey = (string)data[1]; _client.Encryption.EncryptionKey = encryptionKey; _client.Encryption.Enabled = true; return(true); } catch { return(false); } }
static void Main(string[] args) { _client.OnDataRetrieved += _client_OnDataRetrieved; _client.OnDisconnect += _client_OnDisconnect; if (!_client.Connect("127.0.0.1", 1337)) { Console.WriteLine("Failed to connect"); Console.ReadLine(); return; } Connected = true; while (Connected) { try { Console.Write("File to send: "); string path = Console.ReadLine(); _stream = new FileStream(path, FileMode.Open); _client.Send((byte)PacketHeader.StartFileTransfer, Path.GetFileName(path)); Console.WriteLine("Waiting for responce.."); while (FileHandle == 0) { Thread.Sleep(100); } Console.WriteLine("Handle: {0}", FileHandle); byte[] buffer = new byte[1000]; int bytesRead = 0; while ((bytesRead = _stream.Read(buffer, 0, buffer.Length)) > 0) { byte[] block = new byte[bytesRead]; Buffer.BlockCopy(buffer, 0, block, 0, block.Length); _client.Send((byte)PacketHeader.FileTransferBlock, FileHandle, block, _stream.Position == _stream.Length); Console.WriteLine("Sent block ({0} bytes) || LastBlock: {1}", bytesRead, _stream.Position == _stream.Length); } FileHandle = 0; _stream.Dispose(); _stream = null; Console.WriteLine("File Complete"); } catch { Console.WriteLine("Error"); } } Console.WriteLine("Not connected"); Console.ReadLine(); }