public string connect() { Socket sender = null; try { sender = init(); sender.Send(Encoding.UTF8.GetBytes(Properties.BEGIN)); string recvKey = SocketUtils.RecvData(sender); Console.WriteLine(recvKey); if (Properties.NO_COMMUNICATION.Equals(recvKey)) { return(REJECT); } string privateKey = Properties.getPrivateKey(); PublicKey publicKey = Properties.getPublicKey(); char[] sendKey = CriptoUtils.createSesionKey(publicKey, privateKey.ToCharArray()); sender.Send(Encoding.UTF8.GetBytes(sendKey)); Console.WriteLine(recvKey.Length + " " + privateKey.Length); char[] sessionKey = CriptoUtils.createSesionKey(new PublicKey(recvKey, publicKey.mod), privateKey.ToCharArray()); Properties.setSessionKey(new string(sessionKey)); string testMsg = CriptoUtils.Decrypt(SocketUtils.RecvData(sender), Properties.getSessionKey()); return(Properties.TEST_COMMUNICATON.Equals(testMsg) ? SUCCESS : FAILED); /* * //so2.workSocket = sender; * //Socket temp = sender; * //sender.BeginReceive(so2.buffer, 0, StateObject.BUFFER_SIZE, 0, new AsyncCallback(Read_Callback), so2); * //sender.BeginReceive(recvBuf, 0, recvBuf.Length, 0, recBack, null); * //so2.workSocket.Close(); * Stopwatch stopWatch = new Stopwatch(); * TimeSpan ts = new TimeSpan(); * stopWatch.Start(); * int bytesRec = 0; * //Thread.Sleep(3000); * do * { * //Thread.Sleep(3000); * ts = stopWatch.Elapsed; * //Console.WriteLine(connec); * } while ((ts.Seconds < (int)2) && connec!=true); * //close(); * //sender = null; * //init(); * stopWatch.Stop(); * * return "fail"; */ } catch (Exception e) { return(e.Message); } finally { close(sender); } }