Laden...

Event beim connecten auslösen

Erstellt von LatinChriz vor 15 Jahren Letzter Beitrag vor 15 Jahren 778 Views
LatinChriz Themenstarter:in
211 Beiträge seit 2008
vor 15 Jahren
Event beim connecten auslösen

Hallo,

So,... versuche mich gerade am TCP/IP Tutorial von hier:
[Tutorial] Client-/Server-Komponente über TCP-Sockets
Das verbinden funktioniert bereits und ich wollte eben nun diese Funktion um ein Event erweitern, dachte mir geht in Ordnung schauen wir mal wo es dazu ein Tutorial gibt...

[Lösung] Problem mit EventHandler
Habe mir die Version von herbivore angeschaut und rauskopiert mal, und durchgesteppt,...
Beim Verbinden wird nun das Event aufgerufen doch nicht ausgeführt, da anscheinend der EventHandler null ist ?
Jedoch wird der doch zugewiesen bei mir ?

Mache ich hier etwas grundlegendes falsch ?

Habe mir zu meinem Projekt eine Klasse "tcp.cs" hinzugefügt und diesen Code eingefügt:

namespace SmSService
{
    class tcp
    {
        public int Port = 0;
        public event EventHandler MyEvent;

        protected virtual void OnMyEvent(EventArgs e)
        {
            EventHandler myEvent = MyEvent;
            if (myEvent != null)
            {
                myEvent(this, e);
            }
        }

        public tcp(int Port)
        {
            this.Port = Port;
        }

        public void StartTCPServer()
        {
            TcpListener listener = new TcpListener(IPAddress.Any, Port);
            listener.Start();

            try
            {
                listener.Start();
                while (!listener.Pending()) { Thread.Sleep(500); }
                Socket newSocket = listener.AcceptSocket();
                OnMyEvent(EventArgs.Empty);

            }
            catch (Exception ex)
            {
                throw new Exception("Fehler bei Verbindungserkennung", ex);
            }
        }
    }
}

Die Form selber:

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

        tcp TcpServer;
        private void button1_Click(object sender, EventArgs e)
        {

            int Port = Convert.ToInt32(textBox1.Text);

            listBox1.Items.Add("Server gestartet");
            TcpServer = new tcp(Port);
            TcpServer.StartTCPServer();
            TcpServer.MyEvent += new EventHandler(TcpServer_MyEvent);
        }

        void TcpServer_MyEvent(object sender, EventArgs e)
        {

            MessageBox.Show("VERBUNDEN");
        }



    

       
    }
}

Kontakt & Blog: www.giesswein-apps.at

479 Beiträge seit 2008
vor 15 Jahren

Hallo LatinChriz,

sollte man sowas nicht lieber in einer Console ablaufen lassen, oder wenigstens Asyncron?

In pdelvo's
Kleiner Webserver ist sowas glaub ich

mfg.
markus111

[Follow me on Twitter](http://twitter.com/blendingsky)
LatinChriz Themenstarter:in
211 Beiträge seit 2008
vor 15 Jahren

naja man will das ganze doch ausbauen auch irgendwann... ?

Kontakt & Blog: www.giesswein-apps.at

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo LatinChriz,

TcpServer.StartTCPServer();
TcpServer.MyEvent += new EventHandler(TcpServer_MyEvent);

Reihenfolge! Hätte dir beim durchsteppen auffallen sollen.

herbivore