Announcement

Collapse
No announcement yet.

Problem mit Sockets

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem mit Sockets

    Hab den Beitrag schon mal in einem anderem Forum gepostet, von daher einfach nochmal eine Kopie davon =)


    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:
    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 ..

    Besser ?!
    Zuletzt editiert von jonas.woehl; 28.07.2008, 12:29.

  • #2
    ... aber auch als Anfänger kannst Du uns die Arbeit erleichtern:

    1. Bitte aus dem Quelltext mehrfache Leerzeilen reduzieren.
    2. Bitte den Quelltext formatieren; das liest sich leichter: Textbereich markieren und mit dem #-Button als Code kennzeichnen.

    Das kannst Du auch nachträglich erledigen, indem Du Deinen Beitrag mit "Editieren" aufrufst und "Erweitert" wählst.

    Erst danach werde ich Lust haben, mich mit Deinem Problem zu befassen. Jürgen

    Comment

    Working...
    X