private void ServerForm_Load(object sender, EventArgs e)
        {
            this.Enabled = false;
            StartStopServer       dele            = this.ActionStartStop;
            ServerMessageReceived messageReceived = this.ServerCommandReceived;
            ServerMessageResponse messageResponse = this.ServerCommandResponse;
            AddClientsToServer    addClient       = this.AddClientToServer;
            RemoveClientsToServer removeClient    = this.RemoveClientToServer;
            SetServerIPAddress    serverIP        = this.DisplayServerIP;

            _server      = new Server(this, dele, messageReceived, messageResponse, addClient, removeClient, serverIP);
            this.Enabled = true;
        }
Exemple #2
0
        // Constructor
        public Server(ServerForm form, StartStopServer del, ServerMessageReceived action,
                      ServerMessageResponse actionResponse, AddClientsToServer addClient,
                      RemoveClientsToServer removeClient, SetServerIPAddress serverIPDelegate)
        {
            // Create thread
            _serverThread      = new Thread(new ThreadStart(ServerMainThreadFunction));
            _serverThread.Name = "Server Main Thread";
            _serverThread.Start();

            // Create thread for UDP connection
            _threadSendToClient      = new Thread(new ThreadStart(ThreadReceiveResponse));
            _threadSendToClient.Name = "Server Thread Listener";
            _threadSendToClient.Start();

            _parentForm            = form;
            _endActionDelegate     = del;
            _messageReceivedAction = action;
            _messageResponseAction = actionResponse;
            _addClientDelegate     = addClient;
            _removeClientDelegate  = removeClient;
            _displayServerIP       = serverIPDelegate;

            // Get directory of job
            _directoryWork = Directory.GetCurrentDirectory();

            // Get local IP address
            _serverIPAddress = GetPublicIPAddress();

            _parentForm.Invoke(_displayServerIP, (object)_serverIPAddress);

            // How enable port forwarding
            NATUPNPLib.UPnPNATClass upnpnat = new NATUPNPLib.UPnPNATClass();
            _mappingsPort = upnpnat.StaticPortMappingCollection;

            GetLocalIPAddress();

            try
            {
                _mappingsPort.Add(_numberOfPortToListen, "TCP", _numberOfPortToListen, GetLocalIPAddress(), true, "CNC TCP Server");
            }
            catch (Exception excp)
            {
                MessageBox.Show(excp.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                // Send action
                _parentForm.Invoke(this._endActionDelegate, (object)false);
                return;
            }
        }