public void BlockingReadData() { // Data buffer for incoming data. Used in example on MSDN - see link at top of class byte[] bytes = new byte[1024]; while (_running) { try { // Create a TCP/IP socket. _client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); var pbxEndpoint = new IPEndPoint(_ipAddress, _port); _client.Connect(pbxEndpoint); _log.LogInformation($"Socket connected to {_client.RemoteEndPoint}"); // Encode the data string into a byte array. while (_client.Connected) { int bytesRec = _client.Receive(bytes); DataArrived?.Invoke(this, new TransportDataEventArgs(bytes, bytesRec)); //_log.LogDebug($"Received message: {Encoding.ASCII.GetString(bytes, 0, bytesRec)}"); } } catch (SocketException ex) { _log.LogWarning($"Unexpected Socket Disconnection: {ex}"); } catch (Exception ex) { _log.LogWarning($"Unexpected Exception: {ex}"); } WaitAndDestroyBrokenSocket(); } }
private static void Runner(object obj) { var ipep = new IPEndPoint(IPAddress.Any, 4445); var SrvSock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); SrvSock.Bind(ipep); var sender = new IPEndPoint(IPAddress.Any, 4445); EndPoint Remote = sender; while (true) { var data = new byte[1024]; var recv = SrvSock.ReceiveFrom(data, ref Remote); var str = Encoding.UTF8.GetString(data, 0, recv); if (str == "exit") { break; } try { var result = str.Split(',').Select(float.Parse).ToArray(); if (result.Length == 2) { DataArrived?.Invoke(result); } } catch (Exception e) { Debug.Log(e); } SrvSock.SendTo(data, data.Length, SocketFlags.None, Remote); } }
public TcpContext(Socket client) { this.client = client; loop = Dispatcher.BackgroundThread(() => { while (true) { try { var buf = new byte[1024]; int len = 0; var buffer = new MemoryStream(); while (true) { len = client.Receive(buf); buffer.Write(buf, 0, len); if (buf[len - 1] == 0x00) { // 字符串结束 break; } } var bytes = buffer.ToArray(); var str = Encoding.UTF8.GetString(bytes); DataArrived?.Invoke(client, str); } catch { server.NotifyConnectionLost(client); } } }); }
protected override void Radio_Interrupted(object sender, InterruptedEventArgs e) { base.Radio_Interrupted(sender, e); //lock (SyncRoot) { MaxRetries = e.StatusRegister.MaximunTransmitRetries; if (MaxRetries || e.StatusRegister.TransmitDataSent) { _sendCompleteEvent.Set(); } if (e.StatusRegister.ReceiveDataReady) { DataArrived?.Invoke(this, Reader.ReadBufferAll()); } lock (SyncRoot) { Radio.OperatingMode = OperatingModes.StandBy; e.StatusRegister.ResetToDefault(); e.StatusRegister.Save(); if (!_isSending) { Radio.OperatingMode = OperatingModes.ReceiveMode; } } } }
private void DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { ReceivedData = _arduinoPort.ReadExisting(); _lastLineBuffer += ReceivedData; while (_lastLineBuffer.Contains(NEW_LINE_CHAR)) { LastLine = _lastLineBuffer.GetBefore(NEW_LINE_CHAR); _lastLineBuffer = _lastLineBuffer.GetAfter(NEW_LINE_CHAR); LineArrived?.Invoke(this, new EventArgs()); } DataArrived?.Invoke(this, new EventArgs()); }
public void Start(DataArrived showMessageDelegate) { string szData = "\r\n"; byte[] byData = System.Text.Encoding.ASCII.GetBytes(szData); myDelegate = new DataArrived(showMessageDelegate); thread_ = new Thread(new ThreadStart(ReceiveMessage)); thread.IsBackground = true; IPAddress ip = IPAddress.Parse(IP_); IPEndPoint ipEndPoint = new IPEndPoint(ip, port_); udpClient.Send(byData, byData.Length, ipEndPoint); thread.Start(); }
protected override void Radio_Interrupted(object sender, InterruptedEventArgs e) { if (!e.StatusRegister.ReceiveDataReady) { return; } base.Radio_Interrupted(sender, e); DataArrived?.Invoke(this, Reader.ReadBufferAll()); lock (SyncRoot) { Radio.OperatingMode = OperatingModes.StandBy; e.StatusRegister.ResetToDefault(); e.StatusRegister.Save(); Radio.OperatingMode = OperatingModes.ReceiveMode; } }
public void BlockingReadData() { _sp = GetSerialPort(_log, _config.SerialPort); _log.LogInformation($"Opening port {_config.SerialPort}"); _sp.Open(); byte[] rawRxBuf = new byte[SerialReadBufSize]; while (!_stopRequested) { try { var bytesRead = _sp.Read(rawRxBuf, 0, rawRxBuf.Length); if (bytesRead > 0) { DataArrived?.Invoke(this, new TransportDataEventArgs(rawRxBuf, bytesRead)); //_log.LogDebug($"Received message: {Encoding.ASCII.GetString(rawRxBuf, 0, bytesRead)}"); } } catch (IOException) { _log.LogInformation("Threaded serial lexer was stopped due to (expected) I/O exception"); } } }
private void wis_DataAvailable(object sender, WaveInEventArgs e) { Console.WriteLine(DateTime.Now + ":" + DateTime.Now.Millisecond); var ret = 0; var bp = Marshal.AllocHGlobal(e.BytesRecorded); var status = AudioStatus.IsrAudioSampleContinue; var epStatus = EpStatus.IsrEpNull; var recStatus = RecogStatus.IsrRecNull; var rsltStatus = RecogStatus.IsrRecNull; //ep_status 端点检测(End-point detected)器所处的状态 //rec_status 识别器所处的状态 //rslt_status 识别器所处的状态 Marshal.Copy(e.Buffer, 0, bp, e.BytesRecorded); //开始向服务器发送音频数据 ret = AsrDll.QISRAudioWrite(_sessID, bp, (uint)e.BytesRecorded, status, ref epStatus, ref recStatus); if (ret != 0) { throw new Exception("QISRAudioWrite err,errCode=" + ((ErrorCode)ret).ToString("G")); } //服务器返回部分结果 if (recStatus == RecogStatus.IsrRecStatusSuccess) { var p = AsrDll.QISRGetResult(_sessID, ref rsltStatus, 0, ref ret); if (p != IntPtr.Zero) { var tmp = FlyTts.Ptr2Str(p); DataArrived?.Invoke(this, new DataArrivedEventArgs(tmp)); //激发识别数据到达事件 Console.WriteLine(@"服务器返回部分结果!-->" + tmp); } } Thread.Sleep(500); Marshal.FreeHGlobal(bp); //System.Console.WriteLine(System.DateTime.Now + ":" + System.DateTime.Now.Millisecond); }
private void DataRecieved(object sender, RJCP.IO.Ports.SerialDataReceivedEventArgs e) { LastRecieved = _arduinoPort.ReadExisting().Replace('\n'.ToString(), "");; DataArrived?.Invoke(this, new EventArgs()); }
private void InvokeDataArrived(CourierNetwork network, byte[] data, int offset, int length, IPEndPoint remoteEndpoint) { DataArrived?.Invoke(network, data, offset, length, remoteEndpoint); }
protected virtual void OnDataArrived(DataArrivedEventArgs e) { DataArrived?.Invoke(this, e); }
public void MessagePoll() { NetMQ.Msg msg = new NetMQ.Msg(); msg.InitEmpty(); if (_socket.TryReceive(ref msg, TimeSpan.FromMilliseconds(1))) { switch ((MessageType)msg.Data[0]) { case MessageType.Heartbeat: //heartbeat break; case MessageType.Debug: // debug if (_socket.TryReceive(ref msg, TimeSpan.FromMilliseconds(1))) { string text = System.Text.Encoding.ASCII.GetString(msg.Data); if (text == "{}") { break; } JObject jo = (JObject)JsonConvert.DeserializeObject(text); var type = jo["type"].Value <string>(); if (type == "get-program") { GameState.Program = DreyProgram.FromJson(jo); DataArrived?.Invoke(new GetProgramEventArgs() { Program = GameState.Program }); } else if (type == "announce") { var deserialized = JsonConvert.DeserializeObject <GameState>(text, new ObjectTypeDeserializer()); GameState.Announce(deserialized); DataArrived?.Invoke(new AnnounceEventArgs() { State = GameState }); } else if (type == "set-breakpoint") { var address = jo["address"].Value <int>(); GameState.Breakpoints.Add(address); DataArrived?.Invoke(new BreakPointEventArgs() { Address = address, Set = true }); } else if (type == "clear-breakpoint") { var address = jo["address"].Value <int>(); GameState.Breakpoints.Remove(address); DataArrived?.Invoke(new BreakPointEventArgs() { Address = address, Set = false }); } else if (type == "debug-msg") { var msg2 = jo["message"].Value <string>(); DataArrived?.Invoke(new DebugMessageEventArgs() { Message = msg2 }); } else if (type == "debug-msg-line") { var msg3 = jo["message"].Value <string>(); DataArrived?.Invoke(new DebugMessageEventArgs() { Message = msg3 + Environment.NewLine }); } } break; case MessageType.Data: // data if (_socket.TryReceive(ref msg, TimeSpan.FromMilliseconds(1))) { string text = System.Text.Encoding.ASCII.GetString(msg.Data); var ser = new Newtonsoft.Json.JsonSerializer(); using (var reader = new JsonTextReader(new StringReader(text))) { PendingChoice choice = ser.Deserialize <PendingChoice>(reader); GameState.PendingChoice = choice; } DataArrived?.Invoke(new DataEventArgs() { Data = text }); } break; } } }
public void HandleDataArrived(byte[] data) { DataArrived?.BeginInvoke(network, data, 0, data.Length, network.LocalEndpoint, null, null); }
private void Context_DataArrived(Socket client, object ext) { DataArrived?.Invoke(client, ext); }
/// <summary> /// 进行声音识别 /// </summary> /// <param name="inFile">音频文件,pcm无文件头,采样率16k,数据16位,单声道</param> /// <param name="outFile">输出识别结果到文件</param> public void Audio2Txt(string inFile, string outFile = null) { var ret = 0; var result = ""; try { //模拟录音,输入音频 if (!File.Exists(inFile)) { throw new Exception("文件" + inFile + "不存在!"); } if (inFile.Substring(inFile.Length - 3, 3).ToUpper() != "WAV" && inFile.Substring(inFile.Length - 3, 3).ToUpper() != "PCM") { throw new Exception("音频文件格式不对!"); } var fp = new FileStream(inFile, FileMode.Open); if (inFile.Substring(inFile.Length - 3, 3).ToUpper() == "WAV") { fp.Position = 44; } var buff = new byte[BufferNum]; var bp = Marshal.AllocHGlobal(BufferNum); int len; var status = AudioStatus.IsrAudioSampleContinue; var epStatus = EpStatus.IsrEpNull; var recStatus = RecogStatus.IsrRecNull; var rsltStatus = RecogStatus.IsrRecNull; //ep_status 端点检测(End-point detected)器所处的状态 //rec_status 识别器所处的状态 //rslt_status 识别器所处的状态 while (fp.Position != fp.Length) { len = fp.Read(buff, 0, BufferNum); Marshal.Copy(buff, 0, bp, buff.Length); //开始向服务器发送音频数据 ret = AsrDll.QISRAudioWrite(_sessID, bp, (uint)len, status, ref epStatus, ref recStatus); if (ret != 0) { fp.Close(); throw new Exception("QISRAudioWrite err,errCode=" + ((ErrorCode)ret).ToString("G")); } //服务器返回部分结果 if (recStatus == RecogStatus.IsrRecStatusSuccess) { var p = AsrDll.QISRGetResult(_sessID, ref rsltStatus, WaitTime, ref ret); if (p != IntPtr.Zero) { var tmp = FlyTts.Ptr2Str(p); DataArrived?.Invoke(this, new DataArrivedEventArgs(tmp)); result += tmp; Console.WriteLine(@"返回部分结果!:" + tmp); } } Thread.Sleep(500); } fp.Close(); //最后一块数据 status = AudioStatus.IsrAudioSampleLast; ret = AsrDll.QISRAudioWrite(_sessID, bp, 1, status, ref epStatus, ref recStatus); if (ret != 0) { throw new Exception("QISRAudioWrite write last audio err,errCode=" + ((ErrorCode)ret).ToString("G")); } Marshal.FreeHGlobal(bp); var loopCount = 0; //最后一块数据发完之后,循环从服务器端获取结果 //考虑到网络环境不好的情况下,需要对循环次数作限定 do { var p = AsrDll.QISRGetResult(_sessID, ref rsltStatus, WaitTime, ref ret); if (p != IntPtr.Zero) { var tmp = FlyTts.Ptr2Str(p); DataArrived?.Invoke(this, new DataArrivedEventArgs(tmp)); //激发识别数据到达事件 result += tmp; Console.WriteLine(@"传完音频后返回结果!:" + tmp); } if (ret != 0) { throw new Exception("QISRGetResult err,errCode=" + ((ErrorCode)ret).ToString("G")); } Thread.Sleep(200); } while (rsltStatus != RecogStatus.IsrRecStatusSpeechComplete && loopCount++ < 30); if (outFile != null) { var fout = new FileStream(outFile, FileMode.OpenOrCreate); fout.Write(Encoding.Default.GetBytes(result), 0, Encoding.Default.GetByteCount(result)); fout.Close(); } } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { ret = AsrDll.QISRSessionEnd(_sessID, string.Empty); ret = AsrDll.MSPLogout(); IsrEnd?.Invoke(this, new EventArgs()); //通知识别结束 } }
private async void HandleClient(Socket clientSocket) { try { clientSocket.NoDelay = true; using var stream = new NetworkStream(clientSocket, ownsSocket: true) { ReadTimeout = 3000, WriteTimeout = 3000, }; var messageBuffer = new byte[64]; random.Value !.NextBytes(messageBuffer.AsSpan(0, 32)); await stream.WriteAsync(messageBuffer.AsMemory(0, 32), cancellationTokenSource.Token); // 32字节另一半消息 // 64字节公钥 // 64字节签名 var buffer = new byte[160]; await stream.FillAsync(buffer, cancellationTokenSource.Token); buffer.AsSpan(0, 32).CopyTo(messageBuffer.AsSpan(32)); byte[] messageHash = Sha256.ComputeHashToArray(messageBuffer); if (messageHash[0] != 0) { return; // 工作量证明,hash前8位必须是0 } var(pubkey, sign) = ReadPublicKeySignature(buffer.AsSpan(32)); var superAddress = pubkey.ToAddress(); if (!system.IsProducer(superAddress)) { return; } if (!Secp256k1.Secp256k1.Verify(pubkey, messageHash, sign)) { return; } // 认证通过,开始处理请求 stream.ReadTimeout = -1; var clientNode = new SuperNode(pubkey, (IPEndPoint)clientSocket.RemoteEndPoint, isReadOnly: true) { ClientSocket = clientSocket }; ClientConnected?.Invoke(this, new SuperNodeEventArgs(clientNode, Array.Empty <byte>())); try { var arrayPool = ArrayPool <byte> .Create(65536, 1); while (cancellationTokenSource.IsCancellationRequested is false && clientSocket.Connected) { var packetLength = await stream.ReadStructAsync <int>(cancellationTokenSource.Token); if (BitConverter.IsLittleEndian is false) { packetLength = BinaryPrimitives.ReverseEndianness(packetLength); } if (packetLength is 0 || packetLength > 10485760) { return; } byte[] packetBuffer = arrayPool.Rent(packetLength); await stream.FillAsync(packetBuffer.AsMemory(0, packetLength), cancellationTokenSource.Token); // TODO: 处理请求 DataArrived?.Invoke(this, new SuperNodeEventArgs(clientNode, packetBuffer.AsMemory(0, packetLength))); arrayPool.Return(packetBuffer); } } catch { } Closed?.Invoke(this, new SuperNodeEventArgs(clientNode, Array.Empty <byte>())); } catch { }
public void SetDataHandler(DataArrived Method) { DataHandler = Method; }
private void _xaReal_ReceiveRealData(string szTrCode) { Debug.WriteLine("RealData: " + szTrCode); _ewh_ReadSync.Set(); DataArrived?.Invoke(this, new RealDataArgs(szTrCode)); }
private void HandleReceiveCompleted(ReceiveState receiveState, byte[] buffer, int offset, int length, IPEndPoint remoteEndpoint) { DataArrived?.Invoke(network, buffer, offset, length, remoteEndpoint); receiveStatePool.ReturnObject(receiveState); }