kostenloser Webspace werbefrei: lima-city


Problem beim Daten empfangen und Senden -> TcpClient, Socket

lima-cityForumProgrammiersprachenProgrammieren mit .NET & Mono

  1. Autor dieses Themas

    myhead

    myhead hat kostenlosen Webspace.

    Hallo,
    ich versuche mich mal wieder mit Netzwerkprogrammierung und so^^

    Wollte zu anfang eigentlich etwas relativ leichtes machen. Via TCP auf einen FTP Server verbinden und die jeweiligen Antworten des Servers in Textboxen ausgeben.

    private void button1_Click(object sender, EventArgs e)
            {
                //verbinden
                TcpClient client = new TcpClient("ftp.lima-city.de", 21);
                Socket s = client.Client;
    
                //status empfangen
                Byte[] daten = new Byte[256];
                s.Receive(daten);
                
                // empfangene Daten ausgeben
                textBox1.Text = System.Text.Encoding.ASCII.GetString(daten, 0, daten.Length);
    
                // neue Daten senden
                Byte[] sendData = System.Text.Encoding.ASCII.GetBytes("USER abc");
                s.Send(sendData);
    
                // ab hier gibts Probleme
                s.Receive(daten);
    
                daten = new Byte[256];
                textBox2.Text = System.Text.Encoding.ASCII.GetString(daten);
    }


    Das erste Send und Receive funktionieren aber beim zweiten Receive hängt die Anwendung-> keine Rückmeldung.

    Jemand ne Ahnung wo das Problem liegt? oder hab ich mir das alles viel zu einfach vorgestellt ;)

    vielen dank schon mal :D
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hallo myhead,

    Du musst dem FTP-Server noch sagen, dass Dein Kommando zu Ende ist, sonst macht der nichts.
    Ich würde es mal mit:
    Byte[] sendData = System.Text.Encoding.ASCII.GetBytes("USER abc\r\n");
    versuchen.

    Hier steht auch ein bisschen was dazu:
    http://freesoft.org/CIE/RFC/959/20.htm

  4. Autor dieses Themas

    myhead

    myhead hat kostenlosen Webspace.

    darkpandemic schrieb:
    Hallo myhead,

    Du musst dem FTP-Server noch sagen, dass Dein Kommando zu Ende ist, sonst macht der nichts.
    Ich würde es mal mit:
    Byte[] sendData = System.Text.Encoding.ASCII.GetBytes("USER abc\r\n");
    versuchen.


    Vielen dank, genau das war mein Problem :)

    EDIT:

    Das kommt davon wenn man nur debuggt.

    Ich wollte mir die antworten vom Server ausgeben lassen:
    solange noch daten vorhanden sind, sollen diese abgeholt werden und in einen String gespeichert werden.
    this.data = new Byte[128];
    string datatmp = "";
    while (socket.Available > 0)
    {
      this.socket.Receive(this.data);
      datatmp += System.Text.Encoding.ASCII.GetString(this.data);
    }
    return datatmp


    funktioniert beim debuggen, also beim einzelnen durch steppen ganz gut.

    Problem ist nur wenn ich das Programm ohne Debug step durchlaufen lassen, dann werden lediglich leere Strings zurückgegeben...warum? habs auch schon mit einem Thread.Sleep versucht. Bringt aber auch nichts =/

    EDIT II:
    Thread.Sleep() ...richtige Lösung nur an falscher Stelle eingesetzt. Hatte bei jedem Receive einen Sleep, aber was bringt ein Receive, wenn noch keine Anfrage an den Server gesendet wurde xD

    Beitrag zuletzt geändert: 8.8.2011 23:27:00 von myhead
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!