Ejemplo n.º 1
0
 public Server(CpsNet CpsNet, string port)
 {
     this.listening = false;
     _sender        = CpsNet;
     if (!int.TryParse(port, out _srvPort))
     {
         _sender.logMsg(new log(LogType.error, "udp_server -> error convert Port to int: " + port));
     }
     initSrv();
 }
Ejemplo n.º 2
0
        public void receive()
        {
            ////// TODO ########################################################################### IBS ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
            //Thread.Sleep(500); //Verzögerung: Beim Tool starten wird erste logmeldung sporadisch zu früh an gui gesendet

            try
            {
                listener = new UdpClient(_srvPort);
            }
            catch (SocketException)
            {
                _sender.logMsg(new log(LogType.fatal_error, "udp_server -> Exception making UdpClient @Port: " + _srvPort));
            }

            if (listener != null)
            {
                IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, _srvPort);

                try
                {
                    _sender.logMsg(new log(LogType.info, "server listen @port: " + _srvPort));
                    while (this.listening)
                    {
                        byte[] bytes = listener.Receive(ref groupEP);
                        //_sender.logMsg("udp_server receive MESSAGE from: " + groupEP.Address.ToString() + ":" + groupEP.Port.ToString());

                        if (bytes == null || bytes.Length == 0)
                        {
                            _sender.logMsg(new log(LogType.warning, groupEP.Address.ToString() + ":" + groupEP.Port.ToString() +
                                                   "udp_server receive EMPTY MESSAGE"));
                        }

                        Frame f = new Frame(new Client(groupEP.Address.ToString(), groupEP.Port.ToString()), bytes);
                        _sender.receive(f);
                    }
                }
                catch (System.Net.Sockets.SocketException se)
                {
                    if (!se.ToString().Contains("Ein Blockierungsvorgang wurde durch einen Aufruf von WSACancelBlockingCall unterbrochen"))
                    {
                        _sender.logMsg(new log(LogType.fatal_error, "udp_server receive SocketException: " + se.ToString()));
                    }
                }
                catch (Exception e)
                {
                    _sender.logMsg(new log(LogType.fatal_error, "udp_server receive EXEPTION: " + e.ToString()));
                }
                finally
                {
                    listener.Close();
                    _sender.logMsg(new log(LogType.fatal_error, "STOP udp_server"));
                }
            }
        }