Forum
Tipps
News
Menu-Icon

C# Globale Klasse (?)

Hallo,

ich möchte ein Programm schreiben, mit dem unter anderem eine TCP-Verbindung hergestellt wird. Diese soll bei einem bestimmten Event gestartet werden. Zu diesem Zweck brauche ich ja einen TcpClient. Den kann ich ja mit

TcpClient client = new TcpClient(); bekommen.

Nun zu meiner Frage...

Wie schaffe ich es, dass diese Instanz "client" nun in allen Methoden und Events verfügbar ist, wenn ich sie selbst nach einem Event erstellen will.

Zum Verständniss etwas Quellcode:

namespace NetworkClient
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            TcpClient client = new TcpClient();
            try
            {
                listBox1.Items.Add("Verbindungsversuch mit Server über Anschluss 8000.");
                client.Connect(IPAddress.Parse("127.0.0.1"), 8000);
                listBox1.Items.Add("Verbindung hergestellt.");

                // Den Netzwerk-Stream abrufen.
                NetworkStream stream = client.GetStream();

                // Einen BinaryWriter erstellen, um in den Stream zu schreiben.
                BinaryWriter w = new BinaryWriter(stream);

                // Einen BinaryReader erstellen, um aus dem Stream zu lesen.
                BinaryReader r = new BinaryReader(stream);

                // Einen Dialog starten.
                w.Write(ClientMessages.RequestConnect);

                if (r.ReadString() == ServerMessages.AcknowledgeOK)
                {
                    listBox1.Items.Add("Verbunden.");
                }

            }
            catch (Exception err)
            {
                MessageBox.Show(err.ToString());
            }
        }

        private void button_send_Click(object sender, EventArgs e)
        {
            //Hier möchte ich z. B. auf die Instanz "client" bzw. auf die BinaryWriter und -Reader zugreifen können.
        }

        private void button_stop_Click(object sender, EventArgs e)
        {
            client.Close();
            listBox1.Items.Add("Anschluss geschlossen.");
            Connector
        }
    }
}

namespace SharedComponent
{
    public class ServerMessages
    {
        public const string AcknowledgeOK = "OK";
        public const string AcknowledgeCancel = "Cancel";
        public const string Disconnect = "Bye";
    }

    public class ClientMessages
    {
        public const string RequestConnect = "Hello";
        public const string Disconnect = "Bye";
    }
}

Danke für eure Hilfe schonmal... :)

Antworten zu C# Globale Klasse (?):

Hallo,

füge den TcpClient,NetworkStream, etc. als Member der Klasse Form1 ein... ;)

namespace NetworkClient
{
    public partial class Form1 : Form
    {
        /********** neue Member ************/

        private TcpClient       client;
        private NetworkStream   stream;
        private BinaryWriter         w;
        private BinaryReader         r;

        /**********************************/
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.client = new TcpClient();

             try
            {
                listBox1.Items.Add("Verbindungsversuch mit Server über Anschluss 8000.");
                this.client.Connect(IPAddress.Parse("127.0.0.1"), 8000);
                listBox1.Items.Add("Verbindung hergestellt.");

                // Den Netzwerk-Stream abrufen.
                this.stream = client.GetStream();

                // Einen BinaryWriter erstellen, um in den Stream zu schreiben.
                this.w = new BinaryWriter(stream);

                // Einen BinaryReader erstellen, um aus dem Stream zu lesen.
                this.r = new BinaryReader(stream);

                // Einen Dialog starten.
                this.w.Write(ClientMessages.RequestConnect);

                if (r.ReadString() == ServerMessages.AcknowledgeOK)
                {
                    listBox1.Items.Add("Verbunden.");
                }

            }
            catch (Exception err)
            {
                MessageBox.Show(err.ToString());
            }
        }

        private void button_send_Click(object sender, EventArgs e)
        {
            // jetzt geht auch das
           
            this.stream = this.client.GetStream();
           
        }

     
    }
}

Danke. :)


« Hilfe bei nen kleinen Lernprogrammcpp Wie erstellen? »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Internet-Zugriffsprogramm
Ein Internet-Zugriffsprogramm, auch Browser genannt, stellt Internetseiten für den Benutzer dar. Am bekanntesten ist der Microsoft Internet Explorer, gefolgt vom kos...

Programm
Siehe Software...

Quellcode
Ein Quellcode, auch als Quelltext bekannt, bezeichnet den unkompilierten Programm-Code einer Software. Quell- oder Programm-Code ist der auch für Menschen lesbare Co...