none
Problem mit Sockets RRS feed

  • Frage

  • Hallo liebes Forum.Ich habe folgendes Problem :Ich schreibe gerade ein Programm mit dem Daten an ein Gerät gesendet werden sollen über einen Netzwerkport.Da ich ehrlich gesagt nicht weiss, wo der Fehler bei mir sein soll, poste ich mal den ganzen Quellcode.Ich habe schon mal nen Netzwerksniffer mitlaufen lassen, und der hat auch, als ich mich mit dem anderen Rechner verbunden, ein Signal empfangen von meinem Rechner, als ich dann aber einen einfachen String in Bytes senden wollte, hat es nicht funktiniert, obwohl er laut meinem Programm verbunden war. Vielleicht lkönnt ihr mir ja weiter helfen.  =)
    Code Snippet


    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Windows.Forms;

    using System.Net;

    using System.Net.Sockets;



    namespace Netzwerk

    {

        public partial class Form1 : Form

        {



            Form2 Form2 = new Form2();

            Form3 Form3 = new Form3();





            //socket für die Kommunikation deklarieren

            public Socket Socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);



            //Name : Send_Byte_Array --> Array, welches an Datenempfänger gesendet werden soll

            private byte[] send_b_arr;









            public Form1()

            {

                InitializeComponent();



            }







            private void button1_Click(object sender, EventArgs e)

            {



                try

                {



                    //IP - Adresse in Variable schreiben

                    string ip_add = textBox1.Text;



                    //Variable für den NetzwerkPort deklarieren und in Integer Wert umwandeln, a aus textBox gelesen wird

                    int port = Convert.ToInt32(textBox2.Text);









                    //IP-Adresse aus der Variablen in eine Zeichenfolge konvertieren

                    IPAddress ip = IPAddress.Parse(ip_add);



                    //KoOmmunikationsinformationen in Variable (IPEndPoin) schreiben

                    IPEndPoint ip_end = new IPEndPoint(ip, port);







                    button2.Enabled = true;





                    try

                    {

                        //Socket mit vorher bekommen Verbindungsdaten ansprechen

                        Socket.Connect(ip_end);





                        //Wenn die Verbindung besteht, wird es dem Benutzer durch MessageBox dargestellt

                        if (Socket.Connected)

                        {



                            MessageBox.Show("Die Verbindung wurde erfolgreich hergstellt.");



                        }

                    }

                    catch

                    {

                       
    MessageBox.Show("Es kann keine Verbindung erstellt werden.",
    "Verbindungsprobleme", MessageBoxButtons.OK,
    MessageBoxIcon.Exclamation);




                    }



                }

                catch

                {

                   
    MessageBox.Show("Die von ihnen angegebenen Werte sind nicht
    kompatibel.", "Falsche Werte", MessageBoxButtons.OK,
    MessageBoxIcon.Exclamation);


                }



          





            }



            private void button3_Click(object sender, EventArgs e)

            {







                try

                {





                    //IP - Adresse in Variable schreiben

                    string ip_add = textBox1.Text;



                    //Variable für den NetzwerkPort deklarieren und in Integer Wert umwandeln, a aus textBox gelesen wird

                    int port = Convert.ToInt32(textBox2.Text);









                    //IP-Adresse aus der Variablen in eine Zeichenfolge konvertieren

                    IPAddress ip = IPAddress.Parse(ip_add);



                    //KoOmmunikationsinformationen in Variable (IPEndPoin) schreiben

                    IPEndPoint ip_end = new IPEndPoint(ip, port);











                    //Wieder Verbindung mit dem Socket herstellen, da er möglicherweise geschossen wurde

                    Socket.Connect(ip_end);











                    //Die Zeichenfolge, welche verschickt werden soll, in ein ByteArray schreiben

                    send_b_arr = Encoding.ASCII.GetBytes(richTextBox1.Text);





                    for (int i = 0; i < send_b_arr.Length; i = i + 1)

                    {



                        //ByteArray mit Zeichenfolge abschicken

                        Socket.Send(send_b_arr, SocketFlags.None);

                        string index = "";

                        index = index + send_b_arr;





                    }







                    //Vorgang in Protokoll schreiben

                    Form2.listView1.Items.Add(richTextBox1.Text);



                  





                }

                catch

                {



                    //Wenn das Senden nicht funktioniert, wird MessageBox mit Meldung gezeigt

                   
    MessageBox.Show("Etwas stimmt mit der Verbindung nicht!",
    "Verbindungsprobleme", MessageBoxButtons.OK, MessageBoxIcon.Error);




                }



            }



            private void button2_Click(object sender, EventArgs e)

            {



                //Socket wird geschlossen, true --> besagt, dass Socket wieder aufgerufen werden kann

                Socket.Disconnect(true);



            }



            private void button4_Click(object sender, EventArgs e)

            {

                Form3.Show();

            }



            private void button5_Click(object sender, EventArgs e)

            {



                Form2.Show();



            }


        }

    }




    Bitte nicht über wirren Quellcode wundern, bin noch blutiger Anfänger Wink


    Danke schonmal im Vorraus ..

    Montag, 28. Juli 2008 07:24