Laden...

Forenbeiträge von Struppi95 Ingesamt 4 Beiträge

08.06.2013 - 17:01 Uhr

Wie bereits gesagt, war dies Teil der Aufgabe in meiner Klassenarbeit, da wir bisdahin nur mit TCP gearbeitet haben.

 private void button1_Click(object sender, EventArgs e)
        {
           client = new TcpClient();
           button1.Enabled = false;
            
            try
            {
                client.Connect("www.webservicex.net", 80);
            }
            catch (IOException) {

                throw new Exception("Verbindung fehlgeschlagen");
            
            }
            listBox1.Items.Add("Verbindung steht");


            sr = new StreamReader(client.GetStream());
            sw = new StreamWriter(client.GetStream());
           

            senden();
            empfangen();
            
        }

   private void senden() {

                sw.WriteLine("GET globalweather.asmx/GetWeather?CityName=Frankfurt&CountryName=Ger HTTP/1.1");
                sw.WriteLine("Host: www.webservicex.net");
                sw.WriteLine(""); 
        }
08.06.2013 - 16:32 Uhr

Hallo,

ich habe gerade eine Klassenarbeit über ein Programm geschrieben, dass per TCP eine Verbindung zu WebserviceX.NET :: XML Web Services solution provider aufbaut und dann dort per HTTP GET Wetter Daten abfragt.

Es geht um folgendes ich baue per TCPCLient eine Verbindung mit dem PORT 80 auf. Dies klappt soweit, dann schicke ich per StreamWriter zwei Befehle, die ich von folgender Seite habe: default


GET /globalweather.asmx/GetWeather?CityName=string&CountryName=string HTTP/1.1
Host: www.webservicex.net

// Den String habe ich natürlich durch meine Angaben ersetzt 😃

Diese zwei Nachrichten und danach eine Leerzeile ( Laut Aufgabe ) leite ich per StreamWriter an den Server, danach warte ich per StreamReader auf eine Antwort und speichere diese in einer Variablen. Diese Variable möchte ich dann in eine Textdatei schreiben. Leider ist diese Antwort immer leer.

Weiß Jemand vielleicht woran das liegen könnte?

So sieht meine Empfangen Methode aus:

private void empfangen() {

            string pfad = "F:/Antwort.txt";
            FileInfo info = new FileInfo(pfad);
            bool isEmpty = info.Length == 0;
                try
                {
                    antwort = sr.ReadLine();
                }

                catch
                {

                    throw new Exception("Keine Antwort:/!");

                }

                c_textdatei.WriteFile(@pfad, antwort);
                break;
            }
            if (File.Exists(pfad))
            {
                if (!isEmpty)
                {

                    MessageBox.Show("Erfolgreich!");
                }
                else {


                    MessageBox.Show("Die Datei existiert ist aber Leer!");
                
                }
            else {

                MessageBox.Show("Die Datei existiert nicht!");
            
            }    
        }

MfG und Vielen Dank

25.05.2013 - 12:41 Uhr

Hallo,

erstmal vielen Dank für die Antwort.

Genau die Methode Run() gehört zur Klasse Verbindung.

Wir hatten in der Schule gemeinsam so angefangen gehabt.

MfG

Struppi95

24.05.2013 - 20:05 Uhr

Hallo,

Ich muss für die Schule einen C# Chat Server programmieren und habe ein kleines / mittelgroßes Problem. Es geht darum, dass ich ein Problem habe die eingehenden Nachrichten zu verarbeiten.

Der Server fragt zunächst nach einem Namen, diesen kann man dann festlegen per Client und der Server verarbeitet diesen auch. Nun geht es darum, dass jeder User innerhalb des Chattes jede Nachricht empfangen kann.

Der Server ist mit Threads aufgebaut.

Ich vermute ich muss eine foreach- Schleife für jede Verbindung erstellen und diesem dann sagen, er soll die Nachricht per Stream WriteLine versenden.

       
private void Run()
        {
            sw.AutoFlush = true;
            sw.WriteLine("Hallo Client!");
            if (name == "unbenannt")
            {
                sw.WriteLine("Gebe zunächst deinen Namen ein:");
            }

            sw.WriteLine("Wie heißt Du?");
            name = sr.ReadLine();
            if (name == "")
            {

                sw.WriteLine("Wenn du weiter möchtest gib deinen Namen ein:");

            }
            else
            {
                sw.WriteLine("Hallo " + name);
 


                    foreach (Verbindung v in verbindungen)
                    {
                        string nachricht = sr.ReadLine();
                        sw.WriteLine(nachricht);


                    }

            }

Und bei dieser foreach Schleife, scheitere ich leider.

List<Verbindung> verbindungen = new List<Verbindung>();

So habe ich die Liste ins Leben gerufen nur weiß ich nicht wie ich meine Clients dieser Liste hinzufügen soll.

Der Code oberhalb dieses Satzes befindet sich in der Klasse Verbindung.

        private void Run() {


        //Listener

            while (true) {


               var client = Listener.AcceptTcpClient();
               var verbindung = new Verbindung(client, verbindungen);
               counter++;
            }

Diese Methode wird in einem Thread ausgeführt.

Ich hoffe Ihr könnt mein Problem nachvollziehen und mir helfen dieses zu lösen.

Vielen Dank.

MfG