Ejemplo n.º 1
0
        /// <summary>
        /// Установить соединение
        /// </summary>
        /// <returns>Результат выполнения метода</returns>
        private int connect()
        {
            int iRes = 0;

            //Task task;

            if (
                //((m_Server.Address.Equals(IPAddress.None) == false)
                //    && (m_Server.Address.Equals(IPAddress.Any) == false)) &&
                (m_Server > 0)
                )
            {
                m_udpClient = new
#if !_NETFRAMEWORK45
                              UdpClient(m_Server)
#else
                              UdpClientAsync(m_Server, recieve_callBack)
#endif
                ;

                m_udpClient.
#if !_NETFRAMEWORK45
                BeginReceive(new AsyncCallback(recieve_callBack), new object[] { m_udpClient, m_Server })
#else
                ReceiveAsync()
#endif
                ;

                state |= STATE.CONNECT;
            }
            else
            {
                ;
            }

            return(iRes);
        }
Ejemplo n.º 2
0
        private void recieve_callBack(IAsyncResult iar)
        {
            string strReceived = string.Empty;

            UdpClient  udpClient;
            IPEndPoint server;

            try {
                // получить объекты состояния
                udpClient = (iar.AsyncState as object[])[0] as UdpClient;
                server    = (iar.AsyncState as object[])[1] as IPEndPoint;
                // проверить наличие соединения
                if (!(udpClient.Client == null))
                {
                    // получить, обработать результат чтения
                    recieve(udpClient.EndReceive(iar, ref server));
                    // начать новое асинхронное чтение канала по UDP
                    m_udpClient.
#if !_NETFRAMEWORK45
                    BeginReceive(new AsyncCallback(recieve_callBack), new object[] { udpClient, server })
#else
                    ReceiveAsync()
#endif
                    ;
                }
                else
                {
                    ;
                }
            }
            catch (ObjectDisposedException e) { // нормально при разрыве соединения
            }
            catch (Exception e) {
                Logging.Logg().Exception(e, string.Format(@"Метод обратного вызова при асинхронном чтении данных по UDP"), Logging.INDEX_MESSAGE.NOT_SET);
            }
        }