/// <summary> /// データ受信イベント /// </summary> protected virtual void OnUDPDataReceived(UDPDataReceivedEventArgs e) { if (ReceiveEvent != null) { ReceiveEvent(this, e); } }
/// <summary> /// ソケット受信時Callback /// </summary> /// <param name="AR"></param> private void ReceiveCallback(IAsyncResult ar) { //IAsysncResultからUDPClientとIPEndPointを受け取る UdpClient uc = ((UdpState)(ar.AsyncState)).client; IPEndPoint iep = ((UdpState)(ar.AsyncState)).endPoint; try { Byte[] receivedBytes = uc.EndReceive(ar, ref iep); string receivedStr = Encoding.ASCII.GetString(receivedBytes); UDPDataReceivedEventArgs args = new UDPDataReceivedEventArgs(); args.Address = iep.Address; args.PortNumber = iep.Port; args.Message = receivedStr; OnUDPDataReceived(args); //受信待ち再開 udpState.client.BeginReceive(new AsyncCallback(ReceiveCallback), udpState); } catch (Exception e) { Console.WriteLine(e.Message); } }
/// <summary> /// logTextBoxにUDPのEvent内容を追加する /// </summary> /// <param name="e"></param> void AppendUdpEvent(UDPDataReceivedEventArgs e) { logTextBox.AppendText(e.Address + " : " + e.Message + Environment.NewLine); }
private void OnUDPDataReceived(object sender, UDPDataReceivedEventArgs e) { Invoke(new AppendUdpEventDelegate(AppendUdpEvent), e); }