示例#1
0
 /// <summary>
 /// 处理登录返回信息
 /// </summary>
 /// <param name="state"></param>
 private void ProcessLogin(StateObject state)
 {
     try
     {
         if (state.Package.ST == 0)
         {
             //asyncSocketServer.RemoveDisconnectedSession(state);
             _logManager.Info($"{MessageType.Login}{state.Machine.MachineCode} => 登录成功");
             state.IsLogined = true;
             state.ResultBytes.Clear();
             state.Package.CID = FuncCode.EnumAllData;
             Send(state);
         }
         else
         {
             //登录失败,关闭此次会话
             _logManager.Info($"{MessageType.Login}{state.Machine.MachineCode} => 登录失败,关闭此次会话");
             LoginResultPackage package = SocketHelper.BytesToStruct <LoginResultPackage>(state.ResultBytes.ToArray());
             package.ERR     = SocketHelper.NetworkToHost(package.ERR);
             package.RV      = SocketHelper.NetworkToHost(package.RV);
             state.IsLogined = false;
         }
     }
     catch (SocketException e)
     {
         _asyncSocketServer.CloseAndDisposeConnection(state, e, ErrorLevel.Level1);
     }
     catch (Exception e)
     {
         _asyncSocketServer.CloseAndDisposeConnection(state, e, ErrorLevel.Level1);
     }
 }
示例#2
0
 /// <summary>
 /// 处理推送数据返回结果
 /// </summary>
 /// <param name="state"></param>
 private void ProcessRequestForPush(StateObject state)
 {
     try
     {
         if (state.Package.ST == 0)
         {
             //支持推送数据
             state.IsSupported = true;
             state.ResultBytes.Clear();
             //开始接受数据
             ReceiveHead(state);
         }
         else
         {
             //登录失败,关闭此次会话
             var package = SocketHelper.BytesToStruct <ErrorPackage>(state.ResultBytes.ToArray());
             package.ERR       = SocketHelper.NetworkToHost(package.ERR);
             package.RV        = SocketHelper.NetworkToHost(package.RV);
             state.IsSupported = false;
             _asyncSocketServer.CloseAndDisposeConnection(state, new Exception("不支持推送数据,错误代码为" + package.ERR), ErrorLevel.Level1);
         }
     }
     catch (SocketException e)
     {
         _asyncSocketServer.CloseAndDisposeConnection(state, e, ErrorLevel.Level1);
     }
     catch (Exception e)
     {
         _asyncSocketServer.CloseAndDisposeConnection(state, e, ErrorLevel.Level1);
     }
 }
示例#3
0
        /// <summary>
        /// 判断任务是否添加完成
        /// </summary>
        /// <param name="taskid"></param>
        /// <param name="baseUrl"></param>
        /// <param name="Key"></param>
        /// <param name="Signature"></param>
        /// <returns></returns>
        private bool QuerySpeedofprogress(string taskid, string baseUrl, string Key, string Signature)
        {
            int  i    = 0;
            bool falg = false;

            //最多只循环100次以免任务卡死死循环
            while (i < 100)
            {
                string   msg1 = SocketHelper.QuerySpeedofprogress(taskid, baseUrl, Key, Signature);
                progress p1   = JsonConvert.DeserializeObject <progress>(msg1);
                if (p1 != null)
                {
                    if (!p1.data.isFinished || p1.data.percent != 100)
                    {
                        falg = false;
                        i++;
                        continue;
                    }
                    else
                    {
                        falg = true;
                        i    = 100;
                        break;
                    }
                }
                i++;
            }

            return(falg);
        }
示例#4
0
        public static void ReceiveCallback(IAsyncResult ar)
        {
            if (Main.is_debug)
            {
                Main.Logger.InfoFormat("Begin receiving callback ReceiveCallback()");
            }
            object[] asyncState = (object[])ar.AsyncState;
            byte[]   bytes      = (byte[])asyncState[0];
            Socket   socket     = (Socket)asyncState[1];
            int      count      = socket.EndReceive(ar);

            if (count <= 0)
            {
                return;
            }
            Main._receiveMessage = Main.EncodingAscii.GetString(bytes, 0, count);
            SocketHelper socketHelper = new SocketHelper();

            if (Main.is_debug)
            {
                Main.Logger.InfoFormat("Finish initing SocketHelper");
            }
            string s = socketHelper.ProcessMsg(Main._receiveMessage);

            socket.Send(Main.EncodingAscii.GetBytes(s));
            socket.Shutdown(SocketShutdown.Both);
            socket.Close();
            if (!Main.is_debug)
            {
                return;
            }
            Main.Logger.InfoFormat("Finish receiving callback ReceiveCallback() ");
        }
    public async Task SimpleTest()
    {
        var random = new Random();

        var(clientSocket, serverSocket) = SocketHelper.GetSocketPair();

        await using var batchActionDispatcher = new BatchActionDispatcher(TimeSpan.FromMilliseconds(10));

        var bridgeConnectionOptions = new BridgeConnectionOptions(1024 * 1024 * 256);

        await using var clientBridgeConnection = new BridgeConnection(new SocketCap(clientSocket), null, null, batchActionDispatcher, BytesPool.Shared, bridgeConnectionOptions);
        await using var serverBridgeConnection = new BridgeConnection(new SocketCap(serverSocket), null, null, batchActionDispatcher, BytesPool.Shared, bridgeConnectionOptions);

        var clientMultiplexerOption = new OmniConnectionMultiplexerOptions(OmniConnectionMultiplexerType.Connected, TimeSpan.FromMinutes(1), 3, 1024 * 1024 * 256, 3);

        await using var clientMultiplexer = OmniConnectionMultiplexer.CreateV1(clientBridgeConnection, batchActionDispatcher, BytesPool.Shared, clientMultiplexerOption);

        var serverMultiplexerOption = new OmniConnectionMultiplexerOptions(OmniConnectionMultiplexerType.Accepted, TimeSpan.FromMinutes(1), 3, 1024 * 1024 * 256, 3);

        await using var serverMultiplexer = OmniConnectionMultiplexer.CreateV1(serverBridgeConnection, batchActionDispatcher, BytesPool.Shared, serverMultiplexerOption);

        var clientMultiplexerHandshakeTask = clientMultiplexer.HandshakeAsync().AsTask();
        var serverMultiplexerHandshakeTask = serverMultiplexer.HandshakeAsync().AsTask();
        await Task.WhenAll(clientMultiplexerHandshakeTask, serverMultiplexerHandshakeTask);

        var connectTask = clientMultiplexer.ConnectAsync().AsTask();
        var acceptTask  = serverMultiplexer.AcceptAsync().AsTask();

        await TestHelper.RandomSendAndReceive(random, connectTask.Result, acceptTask.Result);

        await TestHelper.RandomSendAndReceive(random, acceptTask.Result, connectTask.Result);
    }
        public void Search()
        {
            var getMoviesResponse = SocketHelper.ExecuteRequest("getMovies");

            Movies = JsonConvert.DeserializeObject <List <Movie> >(getMoviesResponse,
                                                                   new JsonSerializerSettings {
                TypeNameHandling = TypeNameHandling.Objects
            });

            switch (SearchCriteria)
            {
            case "Genre":
            {
                if (!string.IsNullOrEmpty(SearchQuery))
                {
                    Movies = Movies.Where(x => x.Genre != null && x.Genre.ToLower().StartsWith(SearchQuery.ToLower())).ToList();
                }
                break;
            }

            case "Title":
            {
                if (!string.IsNullOrEmpty(SearchQuery))
                {
                    Movies = Movies.Where(x => x.Title.ToLower().StartsWith(SearchQuery.ToLower())).ToList();
                }
                break;
            }
            }
        }
示例#7
0
        /// <summary>
        /// 获取Adb内部版本,可能出现的错误,无法连接
        /// </summary>
        /// <param name="error">错误回调</param>
        /// <returns></returns>
        public static bool VerifyVersion(Action <ErrorResult> error)
        {
            // 连接到ADB服务
            var socket = SocketHelper.Connect();

            if (socket == null)
            {
                // 无法链接到ADB服务
                ErrorResult.InvokeError(error, ConnectError.AdbServerUnable, "Socket 无法链接到ADB服务端(5037)端口!");
                return(false);
            }
            // 执行查询内部版本命令
            const string cmd = "host:version";

            socket.Send(Encoding.ASCII.GetBytes($"{cmd.Length:X4}{cmd}"));
            // 读取结果,包含状态和版本
            var res  = SocketHelper.GetResult(socket);
            var flag = res.Okay && string.Equals(res.Data, AdbVersion);

            try
            {
                socket.Shutdown(SocketShutdown.Both);
                socket.Close();
            }
            catch (Exception)
            {
                // ignored
            }
            return(flag);
        }
 public void Start()
 {
     mGingerSocketServer = new GingerSocketServer2();
     mGingerSocketServer.MessageHandler = MessageHandler;
     ServerPort = SocketHelper.GetOpenPort();
     mGingerSocketServer.StartServer(ServerPort);
 }
示例#9
0
        private void Connect_Click(object sender, RoutedEventArgs e)
        {
            saveCursor           = this.Cursor;
            Mouse.OverrideCursor = Cursors.Wait;

            Connect_Button.IsEnabled = false;

            try
            {
                senderSock = SocketHelper.Connect(textBox.Text);
                IPEndPoint remoteIpEndPoint = senderSock.RemoteEndPoint as IPEndPoint;
                pageforNewConnection.reportActivity("\n Client connected to : " + remoteIpEndPoint, Brushes.Blue, FontWeights.Regular);
                //faccio prima anche se potrei fare dopo, cosi mi porto avanti prima di fare la recv, ma forse non va bene
                pageforNewConnection.addServer(senderSock);

                JsonObject jsObj = SocketHelper.ReceiveImmediatly <JsonObject>(senderSock);
                pageforNewConnection.firstInfo(jsObj, senderSock);

                Switcher.Switch(pageforNewConnection);      //forse meglio spostare, decido quando cambiare pagina
            }
            catch (Exception ex)
            {
                writeError(ex.Message);
            }
            finally
            {
                Connect_Button.IsEnabled = true;
                Mouse.OverrideCursor     = saveCursor;
            }
        }
示例#10
0
 /// <summary>
 /// 处理接收到的数据项
 /// </summary>
 /// <param name="state"></param>
 private void ProcessPushData(StateObject state)
 {
     try
     {
         // All the data has arrived; put it in response.
         var package = SocketHelper.BytesToStruct <PushHeadPackage>(state.ResultBytes.ToArray());
         package.Count = SocketHelper.NetworkToHost(package.Count);
         _logManager.Info($"{MessageType.ResponseDataItem}{state.Machine.MachineCode} => 推送数据项{package.Count}个");
         state.CollectDataCount = package.Count;
         state.ResultBytes.Clear();
         if (package.Count == 0)
         {
             state.Package.CID = FuncCode.PushDataReply;
             Send(state);
         }
         else
         {
             state.WorkSocket.BeginReceive(state.Buffer, 0, 8, 0, ReceiveRecordHeadCallback, state);
         }
     }
     catch (SocketException e)
     {
         _asyncSocketServer.CloseAndDisposeConnection(state, e, ErrorLevel.Level1);
     }
     catch (Exception e)
     {
         _asyncSocketServer.CloseAndDisposeConnection(state, e, ErrorLevel.Level1);
     }
 }
示例#11
0
        private bool Invoke(BaseRequestModel model, UserModel user, SocketHelper socket, Dictionary <string, string> data)
        {
            var middlewaresForThisDispatcher = socket.myMiddlewares
                                               .Where(x => x.Key == Id)
                                               //.Select(xx => xx.Value)
                                               .SelectMany(x => x.Value.FindAll(m =>
                                                                                m.Flags.Contains((ushort)RequestFlag.ForAll) ||
                                                                                m.Flags.Contains(model.Flag)));


            //Logger.Debug($"{Name} PreProcess midlewares start");
            foreach (var middleware in middlewaresForThisDispatcher)
            {
                middleware.PreProcess(model, user, socket, data);
            }
            //Logger.Debug($"{Name} PreProcess midlewares finish");

            //Logger.Debug($"{Name} Handlers start");
            var handled = InvokeHandlers(model, user, socket, data);

            //Logger.Debug($"{Name} Handlers finish");

            //Logger.Debug($"{Name} PostProcess midlewares start");
            foreach (var middleware in middlewaresForThisDispatcher)
            {
                middleware.PostProcess(model, user, socket, data);
            }
            //Logger.Debug($"{Name} PostProcess midlewares finish");


            return(handled);
        }
示例#12
0
        static DistributedCache()
        {
            var q = from t in ConfigurationManager.AppSettings["DefaultCacheServerNodes"].Split(',')
                    let val                       = t.Split('@')
                                         let cred = val.Length == 2 ? val[0].Split(':') : null
                                                    select new ServerNode
            {
                Credentials = cred.Length == 2 ? new NetworkCredential(cred[0].Trim(), cred[1].Trim()) : null,
                IPEndPoint  = SocketHelper.ParseEndPoint(val[1].Trim()),
                ReadOnly    = true
            };

            DefaultCacheServerNodes = q.ToArray();
            if (DefaultCacheServerNodes.Length == 0)
            {
                throw new InvalidOperationException("DefaultCacheServerNodes");
            }
            DefaultCacheServerNodes[0].ReadOnly = false;

            if (!double.TryParse(ConfigurationManager.AppSettings["DefaultPolicyExpiresMinutes"], out DefaultPolicyExpiresMinutes))
            {
                DefaultPolicyExpiresMinutes = 10D;
            }
            EmptyDictionary = new Dictionary <string, object>(0);
        }
示例#13
0
        public static void ClassInitialize(TestContext TestContext)
        {
            RemoteGridIP   = SocketHelper.GetLocalHostIP();
            RemoteGridPort = SocketHelper.GetOpenPort();
            // We start a Ginger grid
            RemoteGingerGrid = new GingerGrid(RemoteGridPort);
            RemoteGingerGrid.Start();

            // Add 2 Ginger Nodes with Dummy Driver
            DummyDriver DummyDriver1 = new DummyDriver();

            Task.Factory.StartNew(() =>
            {
                GingerNodeStarter gingerNodeStarter = new GingerNodeStarter();
                gingerNodeStarter.StartNode("N1", new DummyDriver(), RemoteGridIP, RemoteGridPort);
                gingerNodeStarter.StartNode("N2", new DummyDriver(), RemoteGridIP, RemoteGridPort);
                gingerNodeStarter.Listen();
            });

            Stopwatch stopwatch = Stopwatch.StartNew();

            while (RemoteGingerGrid.NodeList.Count < 2 && stopwatch.ElapsedMilliseconds < 5000)  // max 5 seconds
            {
                Thread.Sleep(50);
            }
        }
示例#14
0
        public override void ExecuteCommand(ClientManager clientManager, Common.Protobuf.Command command)
        {
            CommandInfo cmdInfo;

            try
            {
                cmdInfo = ParseCommand(command, clientManager);
            }
            catch (System.Exception exc)
            {
                if (!base.immatureId.Equals("-2"))
                {
                    _serializedResponsePackets.Add(ResponseHelper.SerializeExceptionResponse(exc, command.requestID, command.commandID));
                }
                return;
            }
            try
            {
                SocketHelper.TransferConnection(clientManager, cmdInfo.CacheId, command, acknowledgementId);
            }
            catch (System.Exception ex)
            {
                _serializedResponsePackets.Add(ResponseHelper.SerializeExceptionResponse(ex, command.requestID, command.commandID));
            }
        }
示例#15
0
        public string TransferFile(string path)
        {
            var isFile = true;
            var bytes  = File.ReadAllBytes(path);

            var fileInfo = Encoding.UTF8.GetBytes("swiper-4.5.0.zip,1");
            //SendPacket(1, 2, fileInfo,isFile);

            var count      = (int)Math.Ceiling(bytes.Length / _bufferLength * 1.0);
            var totalCount = (ushort)(count + 1);

            SendPacket(1, totalCount, fileInfo, isFile);

            var startIndex = 0;
            var length     = _bufferLength;

            for (int i = 1; i <= count; i++)
            {
                ushort index = (ushort)(i + 1);
                byte[] data  = new byte[length];
                Buffer.BlockCopy(bytes, startIndex, data, 0, length);
                SendPacket(index, totalCount, data, isFile);
                startIndex = _bufferLength;
                length     = i == count ? bytes.Length - _bufferLength : _bufferLength;
            }

            var result = SocketHelper.Receive(_socket);

            return(result);
        }
示例#16
0
 // Функция изменения состояния сервера
 private void ChangeStatus()
 {
     SocketHelper.ChangeStatus(); // Изменяет состояние
     if (SocketHelper.Status)     // Узнаёт, запущен ли сервер
     // Если запущен, меняет форму
     {
         statusLabel.Text = "Сервер запущен";
         button1.Text     = "Остановить сервер";
         button2.Visible  = true;
         // И запускает новый поток
         new Thread(() => {
             Thread.CurrentThread.IsBackground = true;
             while (SocketHelper.Status)
             {
                 // Который отображает количество подключенных клиентов
                 connectedLabel.BeginInvoke((MethodInvoker)(() => {
                     connectedLabel.Text = $"Подключено {ClientHandler.testings.Count} студентов";
                 }));
                 // И делает это раз в секунду
                 Thread.Sleep(1000);
             }
         }).Start();
     }
     else
     {
         // Если сервер не запущен, меняет форму
         statusLabel.Text    = "Сервер отключен";
         button1.Text        = "Запустить сервер";
         connectedLabel.Text = "";
         button2.Visible     = false;
     }
 }
示例#17
0
        public void enviarlistitaaa()
        {
            string str  = "";
            string str2 = "";

            if (listanombres.Count > 0 && listalinks.Count > 0 && SocketHelper.IsConnected(cliente))
            {
                foreach (string prr2 in listanombres)
                {
                    str += prr2 + ";";
                }
                str = str.Replace('$', ' ');
                str = str.Remove(str.Length - 1, 1);

                foreach (string prr in listalinks)
                {
                    str2 += prr + ";";
                }
                str2 = str2.Remove(str2.Length - 1, 1);



                cliente.Client.Send(Encoding.UTF8.GetBytes("listaactual$" + str + "$" + str2));
            }
        }
示例#18
0
        public static CommandResult Execute(byte[] data)
        {
            try
            {
                string   msg   = SocketHelper.GetString(data);
                string[] parts = msg.Split(' ');
                string   name  = parts[0].ToLower();
                if (Commands.ContainsKey(name))
                {
                    List <string> args = new List <string>();
                    for (int i = 1; i < parts.Length; i++)
                    {
                        args.Add(parts[i]);
                    }

                    ICommand command = Commands[name];
                    return(command.Execute(args));
                }
            }
            catch (Exception ex)
            {
                //Console.WriteLine("Error At CommandManager.Execute:" + ex.Message);
                Log.error(ex);
            }
            return(null);
        }
示例#19
0
        public void RemoteObjectProxyTest1()
        {
            bool IsReady = false;
            Task t       = new Task(() => {
                RemoteObjectsServer s = new RemoteObjectsServer();
                s.Start(15111);  // TODO: get free port
                s.GetObjectHandler = GetObjectHandler;
                IsReady            = true;
            });

            t.Start();

            Stopwatch st = Stopwatch.StartNew();

            while (!IsReady && st.ElapsedMilliseconds < 10000)
            {
                Thread.Sleep(50);
            }


            RemoteObjectsClient c = new RemoteObjectsClient();

            //TODO: temp get local host
            c.Connect(SocketHelper.GetDisplayHost(), SocketHelper.GetDisplayPort());


            IDisplay calc1 = c.GetObject <IDisplay>("aa1");

            int total = calc1.Add(2, 5);

            Assert.AreEqual(7, total);
        }
        /// <summary>
        /// 测试链接
        /// </summary>
        /// <param name="port"></param>
        /// <param name="error"></param>
        /// <returns></returns>
        public bool TestConnect(int port, Action <ErrorResult> error)
        {
            // 连接到tcp端口失败
            Connect(port, error);
            var flag = socket != null;

            // 连接失败,退出
            if (!flag)
            {
                return(false);
            }
            // 发送测试连接的命令
            SocketHelper.SendTransportCommand(socket, 101, "test");
            var msg = SocketHelper.GetTrandportMessage(socket);
            var cmd = Command.Parse(msg);

            if (cmd == null)
            {
                return(false);
            }
            switch (cmd.Cmd)
            {
            case Command.SUCCESS:
                // 测试连接成功!
                break;

            case Command.LACK_PERMISITION:
                // 缺少必须权限
                Error(ConnectError.ApkLackPermisions, "APK缺少必须权限!");
                return(false);
            }
            OnExit(true);
            return(true);
        }
示例#21
0
        // Когда поле заполнено окончательно
        // и пользователь переключается на другой элемент
        private void textBox1_Leave(object sender, EventArgs e)
        {
            // Сначала проверяем введенный IP-адрес
            string line = textBox1.Text;
            var    arr  = line.Split('.');

            if (arr.Length != 4)
            {
                MessageBox.Show("Некорректный IP адрес", "Некорректный IP адрес2", MessageBoxButtons.OK);
                textBox1.Select();
                return;
            }
            foreach (var item in arr)
            {
                if (Int32.Parse(item) > 256)
                {
                    MessageBox.Show("Некорректный IP адрес", "Некорректный IP адрес2", MessageBoxButtons.OK);
                    textBox1.Select();
                    return;
                }
            }
            // А затем сохраняем его
            Properties.Settings.Default.IP = line;
            Properties.Settings.Default.Save();
            SocketHelper.NotificateIpChanged();
        }
示例#22
0
        public static void ClassInitialize(TestContext TestContext)
        {
            // We start a Ginger grid
            int HubPort = SocketHelper.GetOpenPort();

            GG = new GingerGrid(HubPort);
            GG.Start();

            // Add 2 Ginger Nodes with Dummy Driver

            // TODO: check how to externalize  // make it NodeInfo and drivers capabilities
            DummyDriver        DummyDriver1 = new DummyDriver();
            DriverCapabilities DC           = new DriverCapabilities();

            DC.OS       = "Windows"; //TODO: use const
            DC.Platform = "Web";     //TODO: use const
            GingerNode GN = new GingerNode(DC, DummyDriver1);

            GN.StartGingerNode("N1", HubIP: SocketHelper.GetLocalHostIP(), HubPort: HubPort);


            DummyDriver        DummyDriver2 = new DummyDriver();
            DriverCapabilities DC2          = new DriverCapabilities();

            DC2.OS       = "Mac";
            DC2.Platform = "Java";
            GingerNode GingerNode2 = new GingerNode(DC2, DummyDriver2);

            GingerNode2.StartGingerNode("N2", HubIP: SocketHelper.GetLocalHostIP(), HubPort: HubPort);
        }
        static void StartServer(IApplication app)
        {
            if (ws != null)
            {
                return;
            }
            var ip = IPAddress.Loopback;

            port = SocketHelper.GetRandomUnusedPort(ip);
            ws   = new($"ws://{ip}:{port}");
            if (app is IDisposableHolder dh)
            {
                Disposable.Create(() =>
                {
                    ws?.Dispose();
                    ws = null;
                    tempAes?.Dispose();
                    tempAes = null;
                }).AddTo(dh);
            }
            ws.Start(socket =>
            {
                socket.OnMessage = async message => await OnMessage(message, socket);
            });
        }
示例#24
0
        /// <summary>
        /// 调用摄像头门卫录入拜访人脸照片
        /// </summary>
        /// <param name="keyValue"></param>
        /// <returns></returns>
        public void SaveFileImgForm(CarUserFileImgEntity entity)
        {
            Repository <CarUserFileImgEntity> inlogdb = new Repository <CarUserFileImgEntity>(DbFactory.Base());
            CarUserFileImgEntity old = inlogdb.FindEntity(entity.ID);

            if (old != null)
            {
                if (string.IsNullOrEmpty(old.Userimg))
                {//人脸信息未录入
                    #region 获取海康地址和秘钥
                    DataItemDetailService data = new DataItemDetailService();
                    var    pitem     = data.GetItemValue("Hikappkey");  //海康服务器密钥
                    var    baseurl   = data.GetItemValue("HikBaseUrl"); //海康服务器地址
                    string Key       = string.Empty;
                    string Signature = string.Empty;
                    if (!string.IsNullOrEmpty(pitem))
                    {
                        Key       = pitem.Split('|')[0];
                        Signature = pitem.Split('|')[1];
                    }
                    #endregion
                    FacedataEntity        face     = new FacedataEntity();
                    List <FacedataEntity> FaceList = new List <FacedataEntity>();
                    face.UserId  = old.ID;
                    face.ImgData = entity.Imgdata;
                    FaceList.Add(face);
                    SocketHelper.UploadFace(FaceList, baseurl, Key, Signature);
                }
                old.Userimg = entity.Userimg;
                old.Imgdata = entity.Imgdata;
                inlogdb.Update(old);
            }
        }
示例#25
0
        public ClientHandler(TcpClient client)
        {
            //TODO: blet try blet blet
            try {
                socketHelper = new SocketHelper();
                socketHelper.accept(client);

                string command = socketHelper.receiveMessage();

                switch (command)
                {
                case "get":
                    get();
                    break;

                case "send":
                    send();
                    break;

                default:
                    break;
                }

                socketHelper.close();
            }
            catch (Exception e) {
                Console.WriteLine(e.Message + "\nStackTrace:\n" + e.StackTrace);
            }
        }
示例#26
0
    private void SplitPackets()
    {
        var m_readPos = 0;

        while ((m_recvBufferOffset - m_readPos) > HEAD_LENGTH)
        {
            //Get package length
            var pkgLength = NetHelper.PacketSize(SocketHelper.readUint(m_readPos, m_recvBuffer));

            // 剩下的数据不够一个完整的包则放弃解析
            if (pkgLength > (m_recvBufferOffset - m_readPos))
            {
                break;
            }

            var packet = new byte[pkgLength];
            Buffer.BlockCopy(m_recvBuffer, m_readPos, packet, 0, pkgLength);
            processPacket(packet);

            m_readPos += pkgLength;
        }

        // 还有没有读取完毕的 往前挪一下
        if (m_readPos > 0 && m_readPos < m_recvBufferOffset)
        {
            Buffer.BlockCopy(m_recvBuffer, m_readPos, m_recvBuffer, 0, m_recvBufferOffset - m_readPos);
        }

        // 伸缩
        m_recvBufferOffset -= m_readPos;
    }
        public override void ExecuteCommand(ClientManager clientManager, Alachisoft.NCache.Common.Protobuf.Command command)
        {
            try
            {
                cmdInfo = ParseCommand(command, clientManager);
            }
            catch (Exception exc)
            {
                if (SocketServer.Logger.IsErrorLogsEnabled)
                {
                    SocketServer.Logger.NCacheLog.Error("InitializeCommand.Execute", clientManager.ClientSocket.RemoteEndPoint.ToString() + " parsing error " + exc.ToString());
                }
                {
                    _serializedResponsePackets.Add(Alachisoft.NCache.Common.Util.ResponseHelper.SerializeExceptionResponse(exc, command.requestID, command.commandID));
                }
                return;
            }

            try
            {
                SocketHelper.TransferConnection(clientManager, cmdInfo.CacheId, command, _acknowledgmentId);
            }
            catch (Exception exc)
            {
                if (SocketServer.Logger.IsErrorLogsEnabled)
                {
                    SocketServer.Logger.NCacheLog.Error("InitializeCommand.Execute", clientManager.ClientSocket.RemoteEndPoint.ToString() + " : " + clientManager.ClientID + " failed to connect to " + cmdInfo.CacheId + " Error: " + exc.ToString());
                }
                _serializedResponsePackets.Add(GetOptimizedResponse(Alachisoft.NCache.Common.Util.ResponseHelper.SerializeExceptionResponse(exc, command.requestID, command.commandID)));
            }
        }
        public TaskManager()
        {
            //metto per vedere come mai si chiude
            try
            {
                InitializeComponent();
                LoadListItems();
                sockhelper = new SocketHelper();
                //aggiungo questo metodo all'evento, chiamato quando riceve pacchetto json
                sockhelper.Response += updateInfo;
                //aggiungo questo metodo all'evento, chiamato quando server si disconnette
                SocketHelper.End += removeServer;

                Loaded += MyLoadedRoutedEventHandler;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

            /*ListView lv = (ListView)RecursiveVisualChildFinder<ListView>(TabControl1);
             * if (lv.Name == "lvPrograms")
             * {
             *  GridViewColumn column =lv.Child
             * }
             * ((System.ComponentModel.INotifyPropertyChanged)column).PropertyChanged += (sender, e) =>
             * {
             *  if (e.PropertyName == "ActualWidth")
             *  {
             *       //do something here...
             *   }
             * };*/
        }
示例#29
0
        /// <summary>
        /// Start service on node and connect to local GingerGrid
        /// </summary>
        /// <param name="gingerServiceObject">Service object with [GingerService] annotation</param>
        /// <param name="name">Name which will apear in GingerGrid</param>
        public void StartNode(string name, object gingerServiceObject)
        {
            GingerNode gingerNode = new GingerNode(gingerServiceObject);

            gingerNode.StartGingerNode(name, SocketHelper.GetLocalHostIP(), 15004);   // !!!!!!!!!!!!!!!! Get free port, but prefer 15001 if free
            CheckAddGingerNode(gingerNode);
        }
示例#30
0
        private void buttonInboundSend_Click(object sender, EventArgs e)
        {
            string sendData = this.textBoxClientSend.Text;
            //SocketResult result = SocketHelper.SendData("127.0.0.1", (int)this.numericUpDownClientPort.Value, sendData);

            SocketConfig config = new SocketConfig();

            config.Port           = (int)this.numericUpDownClientPort.Value;
            config.IPAddress      = "127.0.0.1";
            config.SendEndSign    = "</XMLRequestMessage>";
            config.ReceiveEndSign = "</XMLResponseMessage>";
            config.IncludeHeader  = false;

            SocketResult result = SocketHelper.SendData(config, sendData);

            if (result.Type == SocketResultType.Success)
            {
                this.textBoxClientReceive.Text = result.ReceivedString;
            }
            else
            {
                //MessageBox.Show(result.ExceptionInfor, result.Type.ToString());
            }
            Application.DoEvents();
        }
        static void createListener()
        {
            // Create an instance of the TcpListener class.
            TcpListener tcpListener = null;

            //IPAddress ipAddress = new IPAddress(0x6501A8C0);
            IPAddress ipAddress = new IPAddress(0x6401A8C0);
            try
            {
                // Set the listener on the local IP address
                // and specify the port.
                tcpListener = new TcpListener(ipAddress, 1234);
                tcpListener.Start();
                Console.WriteLine( "Waiting for a connection...");
            }
            catch (Exception e)
            {
                var output = "Error: " + e.ToString();
                Console.WriteLine(output);
            }
            while (true)
            {
                // Always use a Sleep call in a while(true) loop
                // to avoid locking up your CPU.
                Thread.Sleep(70);
                // Create a TCP socket.
                // If you ran this server on the desktop, you could use
                // Socket socket = tcpListener.AcceptSocket()
                // for greater flexibility.
                TcpClient tcpClient = tcpListener.AcceptTcpClient();
                // Read the data stream from the client.
                while (true)
                {
                    Thread.Sleep(5);
                    byte[] bytes = new byte[50];
                    NetworkStream stream = tcpClient.GetStream();
                    //if (!stream.DataAvailable) break;
                    stream.Read(bytes, 0, bytes.Length);
                    SocketHelper helper = new SocketHelper();
                    helper.processMsg(tcpClient, stream, bytes);
                }
            }
        }
        public MainPage()
        {
            this.InitializeComponent();

            // Synchronization context
            _synchronizationContext = SynchronizationContext.Current;

            // Events on connectivity
            Utils.EnableConnectivityCheck();
            NetworkInformation.NetworkStatusChanged += new NetworkStatusChangedEventHandler(_OnGotWlanConnected);

            // Sockets
            _socketHelper = new SocketHelper();
            _socketHelper.OnGotImageCallback = _ImageChanged;
            _socketHelper.OnGotSocketConnection = _OnSocketConnection;
            _OnGotWlanConnected(null);

            // Configure UI
            ConnectedOrNot.Fill = new SolidColorBrush(Colors.Red);

            // Configure screen touch
            FullScreenImage.Tapped += _ImageTapped;
        }