예제 #1
0
        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);
            }
        }