TcpClient-Verbindung

Ich Schreibe eine Anwendung zum senden/empfangen von Daten zu und von einem server. Ich brauche, um eine Verbindung vor dem senden einige Daten und müssen es offen halten, so dass Benutzer kann Daten senden kontinuierlich. Die Benutzer können die Verbindung schließen, sich jederzeit durch einen Klick auf die Schaltfläche trennen. Erstellt habe ich 2 buttons, einer zum verbinden und einem trennen.
Code hinter der Schaltfläche Trennen, ist wie folgt:-

    private void button1_Click(object sender, EventArgs e)
    {
        if (tcpclnt.Connected)
        {
            tcpclnt.Client.Disconnect(false);
            stm.Close();
        }
        else
        {
            MessageBox.Show("Not Connected");
        }
    }

code hinter der Schaltfläche verbinden, ist wie folgt:-

    public ASCIIEncoding asen = new ASCIIEncoding();
    public TcpClient tcpclnt = new TcpClient();
    public NetworkStream stm;

    private void Connect_Click(object sender, EventArgs e)
    {
        if (!tcpclnt.Connected)
        {                
            tcpclnt.Connect("XX.XX.XX.XX", 5500);
            MessageBox.Show("Connected to server");


            stm = tcpclnt.GetStream();

            string sysname = "000B0000" + SystemName.Text.ToString();
            byte[] sys1 = asen.GetBytes(sysname);
            sys1[0] = 0; sys1[1] = 0;
            sys1[2] = 0; sys1[3] = 0xB;
            sys1[4] = 0; sys1[5] = 0;
            sys1[6] = 0; sys1[7] = 0;
            try
            {
                stm.Write(sys1, 0, sys1.Length);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
                MessageBox.Show("Error in Sending data");
            }
            if (stm.DataAvailable)
            {
                try
                {
                    byte[] bb = new byte[600];
                    int k = 8;                        
                    k = stm.Read(bb, 0, bb.Length);
                    string value = ASCIIEncoding.ASCII.GetString(bb, 8, k - 8);
                    MessageBox.Show(value.ToString());
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                    MessageBox.Show("Error in Reading data");
                }
            }                
         }
         else {
                MessageBox.Show("Already Connected");
        }
    } 

Nun, wenn ich auf Trennen-Taste und klicken wieder auf die Schaltfläche verbinden, es wirft eine exception auf tcpclient.connect Linie. Ich verstehe nicht, warum oder wie kann ich es lösen.

  • Kann u erwähnen, welche Art von Ausnahme u r vor ?
InformationsquelleAutor Adir | 2012-07-01
Schreibe einen Kommentar