예제 #1
0
        public void open(string ip, int port)
        {
            this.ip   = ip;
            this.port = port;
            try
            {
                initConnection();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.GetBaseException());
            }
            Thread heartbeatThread = new Thread(SocketThread);

            heartbeatThread.IsBackground = true;
            heartbeatThread.Start();

            IExecutor handler = null;

            foreach (IExecutor exec in handlers.Values)
            {
                if (exec.getnProtoID() == InitConnectExec.nProtoID)
                {
                    handler = exec;
                    break;
                }
            }

            long startTime = Utils.currentTimeMillis();

            while (handler.getValue() == null)
            {
                if ((Utils.currentTimeMillis() - startTime) > 30 * 1000)//超时
                {
                    break;
                }
                sleepMillis(1);
            }
            InitConnect.Response res = (InitConnect.Response)handler.getValue();
            connID = (long)res.S2C.ConnID;
            //Console.WriteLine(connID);
        }
예제 #2
0
 public void execute(ProtoBufPackage pack)
 {
     response = InitConnect.Response.ParseFrom(pack.Bodys);
     //Console.WriteLine(response);
 }