public SenderResponse Send(IEnumerable <ItemValue> values, int timeout = 500)
        {
            var req = new SenderRequest();

            req.Request = "sender data";
            req.Data    = values.Cast <object>().ToArray();
            var jsonReq = JsonConvert.SerializeObject(req);

            using (var tcpClient = new TcpClient(_zabbixServer, _port))
                using (var networkStream = tcpClient.GetStream())
                {
                    var data = _encoding.GetBytes(jsonReq);
                    networkStream.Write(data, 0, data.Length);
                    networkStream.Flush();
                    var counter = 0;
                    while (!networkStream.DataAvailable)
                    {
                        if (counter < timeout / 50)
                        {
                            counter++;
                            Thread.Sleep(50);
                        }
                        else
                        {
                            throw new TimeoutException();
                        }
                    }

                    var resbytes = new Byte[1024];
                    networkStream.Read(resbytes, 0, resbytes.Length);
                    var s       = _encoding.GetString(resbytes);
                    var jsonRes = s.Substring(s.IndexOf('{'));
                    return(JsonConvert.DeserializeObject <SenderResponse>(jsonRes));
                }
        }
        public SenderResponse Send(IEnumerable<ItemValue> values, int timeout = 500)
        {
            var req = new SenderRequest();
            req.Request = "sender data";
            req.Data = values.Cast<object>().ToArray();
            var jsonReq = JsonConvert.SerializeObject(req);
            using (var tcpClient = new TcpClient(_zabbixServer, _port))
            using (var networkStream = tcpClient.GetStream())
            {
                var data = _encoding.GetBytes(jsonReq);
                networkStream.Write(data, 0, data.Length);
                networkStream.Flush();
                var counter = 0;
                while (!networkStream.DataAvailable)
                {
                    if (counter < timeout / 50)
                    {
                        counter++;
                        Thread.Sleep(50);
                    }
                    else
                    {
                        throw new TimeoutException();
                    }
                }

                var resbytes = new Byte[1024];
                networkStream.Read(resbytes, 0, resbytes.Length);
                var s = _encoding.GetString(resbytes);
                var jsonRes = s.Substring(s.IndexOf('{'));
                return JsonConvert.DeserializeObject<SenderResponse>(jsonRes);
            }
        }