Beispiel #1
0
        private void getData()
        {
            string args;

            new Task(() =>
            {
                if (tcpClient.Connected)
                {
                    stream = tcpClient.GetStream();
                    reader = new BinaryReader(stream);
                }
                while (tcpClient.Connected)
                {
                    try
                    {
                        args = reader.ReadString();
                        Debug.Write(args);
                    }
                    catch (Exception ex)
                    {
                        break;
                    }
                    TypeEventArgs e = JsonConvert.DeserializeObject <TypeEventArgs>(args);
                    OnDataRecived?.Invoke(this, e);
                }
            }).Start();
        }
Beispiel #2
0
        public void Listen()
        {
            if (_thread != null && _thread.IsAlive)
            {
                canceller.Cancel();
            }
            canceller = new CancellationTokenSource();
            _client.Client.Bind(new IPEndPoint(IPAddress.Any, _port));
            _thread = new Thread(() =>
            {
                var from = new IPEndPoint(0, 0);
                byte[] buffer;
                var token = canceller.Token;
                while (!token.IsCancellationRequested)
                {
                    try
                    {
                        var response = _client.ReceiveAsync();
                        if (response.Wait(3000, token) && !response.IsFaulted && !response.IsCanceled &&
                            response.IsCompleted)
                        {
                            buffer   = response.Result.Buffer;
                            from     = response.Result.RemoteEndPoint;
                            var data = JsonConvert.DeserializeObject <dynamic>(Encoding.UTF8.GetString(buffer));
                            OnDataRecived?.Invoke(this, new TransmissionEventArgs(data, from.Address));
                        }
                        else
                        {
                            if (response.IsFaulted)
                            {
                                logger.Error(response.Exception, "Broadcast failed");
                            }
                        }
                    }
                    catch (SocketException e)
                    {
                        if (e.ErrorCode != 10004)
                        {
                            throw e;
                        }

                        logger.Fatal(e, "Broadcast failed");
                        break;
                    }
                    catch (OperationCanceledException e)
                    {
                        logger.Information("Broadcaster terminated");
                    }
                }
            });
            _thread.Start();
        }
Beispiel #3
0
    void recieveArgs_Completed(object sender, SocketAsyncEventArgs e)
    {
        var are = (AutoResetEvent)e.UserToken;

        are.Set();

        latestRecivedData = "";
        for (int i = 0; i < e.BytesTransferred; i++)
        {
            latestRecivedData += Convert.ToChar(e.Buffer[i]);
        }

        OnDataRecived.Invoke(latestRecivedData);
    }
Beispiel #4
0
    void dataRead(IAsyncResult result)
    {
        byte[] buffer = result.AsyncState as byte[];

        string data = ASCIIEncoding.ASCII.GetString(buffer, 0, buffer.Length);

        OnDataRecived.Invoke(data);

        if (!stopReciver)
        {
            buffer = new byte[BufferSize];
            connectionStream.BeginRead(buffer, 0, BufferSize, dataRead, buffer);
        }
    }
Beispiel #5
0
        public void Listen()
        {
            if (_thread != null && _thread.IsAlive)
            {
                canceller.Cancel();
            }
            canceller = new CancellationTokenSource();
            _thread   = new Thread(() =>
            {
                var ipep = new IPEndPoint(IPAddress.Any, _listeningPort);
                _listeningSocket.Bind(ipep);
                _listeningSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(_multicastAddress, IPAddress.Any));

                var token = canceller.Token;
                while (!token.IsCancellationRequested)
                {
                    var b        = new byte[BufferLength];
                    var remoteEp = (EndPoint)ipep;
                    try
                    {
                        _listeningSocket.ReceiveFrom(b, ref remoteEp);
                    }
                    catch (SocketException e)
                    {
                        if (e.ErrorCode != 10004)
                        {
                            throw e;
                        }
                        break;
                    }
                    var data = JsonConvert.DeserializeObject <dynamic>(Encoding.UTF8.GetString(b).Trim());
                    OnDataRecived?.Invoke(this, new TransmissionEventArgs(data, ((IPEndPoint)remoteEp).Address));
                }
            });
            _thread.Start();
        }