Ejemplo n.º 1
0
        private void buttonConnect_Click(object sender, EventArgs e)
        {
            if (this._bIsConnected == false)
            {
                DisplayMessageTx    del            = DisplayMessage;
                EndTransferToServer endDel         = EndTransferToServer;
                EndConnectToServer  connectDel     = ConnectDisconnect;
                SetServerIPAddress  delSetServerIP = SetServerIP;

                this.Enabled = false;
                IPAddress address;
                if ((_serverIPAddress != null) && (IPAddress.TryParse(_serverIPAddress, out address) == true))
                {
                    _client = new Client(this, _serverIPAddress, del, endDel, connectDel, delSetServerIP, false);
                }
                else
                {
                    this.Enabled = true;
                    return;
                }
            }
            else
            {
                if (_client != null)
                {
                    this.Enabled = false;
                    _client.DestroyClient();
                }

                richTextBoxMessage.Clear();
                textBoxCommands.Clear();
            }
        }
Ejemplo n.º 2
0
        public Client(Form1 form, string serverIP, DisplayMessageTx displayDelegate, EndTransferToServer endDelegate,
                      EndConnectToServer connectDelegate, SetServerIPAddress serverIPDelegate, bool bDiscover)
        {
            _parentForm          = form;
            _displayDelegate     = displayDelegate;
            _endTransferDelegate = endDelegate;
            _connectDelegate     = connectDelegate;
            _setServerIP         = serverIPDelegate;

            _serverIPAddress = serverIP;

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

            // Create thread
            _threadClient      = new Thread(new ThreadStart(ClientThreadFunction));
            _threadClient.Name = "Client Thread";
            _threadClient.Start();

            // Create thread that listen for server remote commands
            _threadListenFromServer      = new Thread(new ThreadStart(ClientListenServerThread));
            _threadListenFromServer.Name = "Client Listen from Server";
            _threadListenFromServer.Start();

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

                // Open a UDP Port to forward to a specific Computer on the Private Network
                _mappingsPort.Add(_numberOfPortToListen, "TCP", _numberOfPortToListen, GetLocalIPAddress(), true, "Client TCP");
            }
            catch (Exception excp)
            {
                MessageBox.Show("Impossible discover server because port " + _numberOfPortToListen + " is already occupied", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                // Send information to form
                _parentForm.Invoke(this._connectDelegate, (object)false);
                return;
            }

            // Get client public ip
            _clientPublicAddress = GetPublicIPAddress();

            if (bDiscover == true)
            {
            }
            else
            {
                // Start initialization
                _eventHandle[0].Set();
            }
        }