Message filter which decodes requests as well as create some pre-formated answers.
        /// <summary>
        /// Bind to the
        /// </summary>
        /// <param name="port"></param>
        public CAUdpListener(IPAddress serverAddress, int port, CAServerFilter filter)
        {
            this.filter = filter;

            UDPSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            UDPSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);
            UDPSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
            UDPSocket.Bind(new IPEndPoint(serverAddress, port));
            EndPoint tempRemoteEP = (EndPoint)sender;
            UDPSocket.BeginReceiveFrom(buff, 0, buff.Length, SocketFlags.None, ref tempRemoteEP, GotUdpMessage, tempRemoteEP);
        }
Esempio n. 2
0
        /// <summary>
        /// Bind to the
        /// </summary>
        /// <param name="port"></param>
        public CAUdpListener(IPAddress serverAddress, int port, CAServerFilter filter)
        {
            this.filter = filter;

            UDPSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            UDPSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);
            UDPSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
            UDPSocket.Bind(new IPEndPoint(serverAddress, port));
            EndPoint tempRemoteEP = (EndPoint)sender;

            UDPSocket.BeginReceiveFrom(buff, 0, buff.Length, SocketFlags.None, ref tempRemoteEP, GotUdpMessage, tempRemoteEP);
        }
Esempio n. 3
0
        public CAServer(IPAddress serverAddress, int tcpPort, int udpPort, int beaconPort)
        {
            //Console.WriteLine("Server on "+serverAddress+" "+tcpPort+" "+udpPort+" "+beaconPort);
            if (serverAddress == null)
            {
                serverAddress = IPAddress.Any;
            }
            ServerAddress = serverAddress;
            this.udpPort  = udpPort;
            this.tcpPort  = tcpPort;
            serverFilter  = new CAServerFilter(this);
            udp           = new CAUdpListener(serverAddress, udpPort, serverFilter);
            tcpListener   = new TcpListener(serverAddress, tcpPort);
            tcpListener.Start();
            tcpListener.BeginAcceptSocket(RecieveConn, tcpListener);

            checkConnections = new Thread(new ThreadStart(ConnectionChecker));
            checkConnections.IsBackground = true;
            checkConnections.Start();

            beacon = new CABeacon(this, udpPort, beaconPort);
        }