Esempio n. 1
0
        public object execute(IExecutor handler)
        {
            ProtoBufPackage pack = handler.buildPackage();

            addHander(pack.NSerialNo, handler);
            while (!over)
            {
                if (connected)
                {
                    try
                    {
                        socket.Send(pack.pack());
                        ms.Flush();
                    }catch (Exception e)
                    {
                        Console.WriteLine(e.GetBaseException());
                    }
                    break;
                }
                sleepMillis(1);
            }
            long startTime = Utils.currentTimeMillis();

            while (handler.getValue() == null)
            {
                if ((Utils.currentTimeMillis() - startTime) > 30 * 1000)//超时
                {
                    break;
                }
                sleepMillis(1);
            }
            return(handler.getValue());
        }
Esempio n. 2
0
        /**
         * 初始化协议
         * @throws UnknownHostException
         * @throws IOException
         */
        public void initConnection()
        {
            ms     = new MemoryStream();
            socket = new Socket(SocketType.Stream, ProtocolType.Tcp);
            IPAddress  ipAdd = IPAddress.Parse(ip);;
            IPEndPoint point = new IPEndPoint(ipAdd, port);

            socket.Connect(point);
            InitConnectExec init = new InitConnectExec();
            ProtoBufPackage pack = init.buildPackage();

            this.addHander(pack.NSerialNo, init);
            socket.Send(pack.pack());
            ms.Flush();
        }
Esempio n. 3
0
 /**
  * 发送心跳包
  */
 public void sendHeartbeat()
 {
     while (!over && keepAlive)
     {
         try
         {
             sleepMillis(10 * 1000);// 10s发送一次心跳
             KeepAliveExec   keepAlive = new KeepAliveExec();
             ProtoBufPackage pack      = keepAlive.buildPackage();
             addHander(pack.NSerialNo, keepAlive);
             socket.Send(pack.pack());
             ms.Flush();
         }
         catch (Exception e)
         {
         }
     }
 }