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(); }
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(); }
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); }
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); } }
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(); }