tutorials.de Buch-Aktion 05/2012
Seite 2 von 2 ErsteErste 12
ERLEDIGT
JA
ANTWORTEN
20
ZUGRIFFE
8511
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #16
    Fridulin Fridulin ist offline Mitglied Brokat
    Registriert seit
    Dec 2004
    Beiträge
    309
    Hi, Danke für die Antwort. Er sendet so nur ganz ganz langsam und auch nur bis 204kb wenn es um eine Zip datei geht. Hast du evt. noch eine Idee?
    Grüße.

    also mit deinen beispiel sende ich diese und mit folgendes lese ich die Datei wieder aus:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    [b][color=#0000ff]while[/color][/b][color=#0000ff][/color][color=#006400](([/color]i [color=#006400]= [/color]stream[color=#006400].[/color][b][color=#191970]Read[/color][/b][color=#191970][/color][color=#006400]([/color]bytes[color=#006400], [/color][color=#00008b]0[/color][color=#006400], [/color]bytes[color=#006400].[/color]Length[color=#006400]))!=[/color][color=#00008b]0[/color][color=#006400]) [/color]
    [color=#006400]{ [/color]
    [color=#006400]StreamWriter sw [color=#006400]= [/color][b][color=#008b8b]new [/color][color=#191970]StreamWriter[/color][/b][color=#191970][/color][color=#006400]([/color]Application[color=#006400].[/color]StartupPath [color=#006400]+ [/color][color=#ff00ff]"\" [/color][color=#006400]+ [/color][color=#ff00ff]"speichern.zip"[/color][color=#006400], [/color][b][color=#008b8b]true[/color][/b][color=#008b8b][/color][color=#006400]);[/color][/color]
    [color=#006400][color=#000000]sw[/color][color=#006400].[/color][color=#000000]NewLine [/color][color=#006400]= [/color][color=#ff00ff]""[/color][color=#006400];[/color][/color]
    [color=#006400]sw[color=#006400].[/color][b][color=#191970]WriteLine[/color][/b][color=#191970][/color][color=#006400]([/color]bytes[color=#006400]);[/color][/color]
    [color=#006400]sw[color=#006400].[/color][b][color=#191970]Close[/color][/b][color=#191970][/color][color=#006400](); [/color][/color]
    [color=#006400][color=#006400]....[/color][/color]
    [size=1][color=#006400][size=1][color=#006400][size=2]}[/size][/color][/size][/color][/size]
    [color=#006400][/color]


    Grüße
     

  2. #17
    MC_Straßenköter MC_Straßenköter ist offline Mitglied Bronze
    Registriert seit
    May 2005
    Beiträge
    33
    Hi!

    Nur der Vollständigkeit halber, hab grad folgendes gelesen:

    Buffer class is applicable to the following primitive types: Boolean, Char, SByte, Byte, Int16, UInt16, Int32, UInt32, Int64, UInt64, IntPtr, UIntPtr, Single, and Double.

    String fällt also leider nicht unter primitive types. Sorry!!

    Weiter gutes Gelingen...
     

  3. #18
    Fridulin Fridulin ist offline Mitglied Brokat
    Registriert seit
    Dec 2004
    Beiträge
    309
    Alles klaro macht nichts, Danke für die Infos. Vielleicht eine Andere Idee hast du nicht, oder

    Grüße
     

  4. #19
    Avatar von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.783
    Hi.

    Habe den Thread jetzt nur so überflogen, aber du solltest dir bissl mehr Gedanken noch machen!
    Einfach wild drauf los die Daten einer Datei zu senden ist nicht so geschickt, was ist wenn die gegenseite die Dateien nicht will? Oder woher soll der Empfänger nun wissen was für eine Datei du ihm schickst? (Dateiname..)

    Also solltest du dem Empfänger zuerst ein "Angebot" machen und dann warten was er dazu zu sagen hat. Wenn er die Datei haben will, schick sie ihm, wenn nicht, mach was anderes. Zusätzlich wäre ein Timeout nicht schlecht, nachdem du aufhörst auf das Ok bzw. Nein zu warten.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    S = Sender
    E = Empfänger
    |          S          |          E          |
    |-------------------------------------------|
    |   FILE bla.zip      |      *wartet*       |
    |      *wartet*       |      OK bla.zip     |
    |   *daten senden*    |   *daten empfangen* |
     
    oder
     
    |          S          |          E          |
    |-------------------------------------------|
    |   FILE bla.zip      |      *wartet*       |
    |      *wartet*       |   ERROR bla.zip     |
    |      *beenden*      |   *entscheide du*   |

    Im Anhang findest nen Beispiel.
    Die Dateien jeweils extra zu einer ausführbaren Datei kompilieren. Zuerst den Receiver starten, danach den Sender. Beim Sender wirst ausserdem noch die IPAdresse ändern wollen. Einfach mal den Empfänger starten, steht dann dort auf welche IP er lauscht.
    (Wie gesagt, einfaches Beispiel)

    Beim Sender kannst dann den Pfad zu einer lokalen Datei angeben, diese wird dann gesendet. Beim Empfänger muss der Transfer "gestartet" werden. Wenn die Aufforderung kommt einfach "n" für "Transfer nicht starten" und "y" für "Transfer starten" eingeben. (Mit Enter bestätigen.)

    Viel Spass..
    Angehängte Dateien Angehängte Dateien
     
    With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
    Aaron Satie

    Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
    Captain Jean-Luc Picard, Stardate ~41294.5

    Tutorials.de chattet. Hier gibts auch .net Support ^^
    Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions

  5. #20
    Fridulin Fridulin ist offline Mitglied Brokat
    Registriert seit
    Dec 2004
    Beiträge
    309
    Dankeschön, genau so etwas habe ich als Beispiel gebraucht. Ist schon rellativ einfach gehalten, daß auch ich da halbwegs durchblicken kann.
    So etwas hatte ich evt. eh vor mit einer Abfrage ob man die Datei annehmen will, aber habe ein paar schwierigkeiten gehabt einige Probleme zu Lösen. Ich habe es z.B: nur geschafft Textdatei zu senden und zu Empfangen, bei anderen Dateien Funktioniert es komischerweise nicht. Die Datei ist zu klein und er überträgt auch nur ganz langsam. Ich werde gleich mal den Datei Sende rund Empfänger von deinm Programm einbauen, damit habe ich bestimmt mehr Erfolg.

    Grüße und Danke nochmals!
    Geändert von Fridulin (28.06.05 um 19:34 Uhr)
     

  6. #21
    b00Gie b00Gie ist offline Grünschnabel
    Registriert seit
    Feb 2008
    Beiträge
    1
    Hallöle,

    ist zwar nen alter Thread, nur brauche ich genau das selbe wie der Threadersteller...

    Habe erst vor kurzem angefangen C# zu lernen und schon einige kleine DOS Applikationen geschrieben, nur komm ich gerade nicht weiter....

    und zwar, wollte ich das Programm von Alexander (dass er in diesem Thread geposted hat) so umschreiben, dass es 2 Dateien auf der Festplatte sucht, findet und an eine bestimmte IP sendet....

    Nunja, daran haperts... ich habe es ja nichtmal geschafft 2 fixe Dateien zu senden... nach der Übertragung der ersten Datei, stürzt das Programm einfach ab

    Und wie ich das mit dem Durchsuchen der Festplatte anstellen soll, weiss ich leider auch nicht...

    Waere nett, wenn mir jemand helfen könnte...

    Mein Versuch das Programm umzuschreiben:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    
    using System;
    using System.IO;
    using System.Net;
    using System.Net.Sockets;
    using System.Reflection;
    using System.Threading;
    using System.Text;
     
    namespace furred.Tutsde.FileTransfer
    {
        /// <summary>
        /// Zusammenfassung für Class1.
        /// </summary>
        class startup
        {
            /// <summary>
            /// Der Haupteinstiegspunkt für die Anwendung.
            /// </summary>
            [STAThread]
            static void Main(string[] args)
            {
                Console.Write("Pfad> ");
                string path = @"C:\test1.exe";
                            string path2 = @"C:\test2.exe";
     
                if(!File.Exists(path))
                {
                    Console.WriteLine("404");
                    return;
                }
                if (!File.Exists(path2))
                {
                    Console.WriteLine("404");
                    return;
                }
     
                TcpClient client = new TcpClient();
                client.Connect("192.168.168.169", 5990);
                NetworkStream stream = client.GetStream();
     
                sendMsg(stream, "FILE " + Path.GetFileName(path));
                string msg = readMsg(stream);
                string accept_msg = "OK " + Path.GetFileName(path);
     
                            sendMsg(stream, "FILE " + Path.GetFileName(path2));
                            string msg = readMsg(stream);
                            string accept_msg = "OK " + Path.GetFileName(path2);
     
                Console.WriteLine("GOT '{0}' - Hoping for '{1}'",
                    msg, accept_msg);
     
                if (msg.Equals(accept_msg))
                {
                    FileStream fstream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                            FileStream fstream = File.Open(path2, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                    long s_length = fstream.Length;
                    long s_read = 0;
     
                    using (BinaryReader reader = new BinaryReader(fstream))
                    {
                        while (s_length > s_read)
                        {
                            byte[] buffer = new byte[1024];
                            int read = reader.Read(buffer, 0, 1024);
                            s_read += read;
     
                            sendBuffer(stream, buffer, read);
     
                            int pc = (int) ((((double)s_read) / ((double)s_length)) * 100);
     
                            if (pc % 5 == 0)
                                Console.WriteLine("{0:000.0}% gesendet..", pc);
                        }
                    }
                    stream.Flush();
                    Console.WriteLine("Successfully Sent! - Press [enter] to exit..");
     
                }
                else
                    Console.WriteLine("File not accepted by peer..");
     
                stream.Close();
                client.Close();
     
                Console.WriteLine("Press [enter] to exit..");
                Console.ReadLine();
            }
     
            private static string readMsg(NetworkStream stream)
            {
                Encoding enc = Encoding.UTF8;
                byte[] buffer = new byte[1024];
                int read = stream.Read(buffer, 0, 1024);
     
                string msg = enc.GetString(buffer, 0, read);
                return msg.Trim(new char[] { '\r', '\n' });
            }
     
            private static void sendMsg(NetworkStream stream, string msg)
            {
                Encoding enc = Encoding.UTF8;
                byte[] buffer = enc.GetBytes(msg + "\r\n");
                sendBuffer(stream, buffer, buffer.Length);
            }
     
            private static void sendBuffer(NetworkStream stream, byte[] buffer, int size)
            {
                stream.Write(buffer, 0, size);
            }
        }
     
    }
     

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 23.10.09, 12:42
  2. Antworten: 3
    Letzter Beitrag: 13.11.08, 13:51
  3. C#: Datei einem Programm zuweisen
    Von MrDisaster im Forum Sonstige Sprachen
    Antworten: 0
    Letzter Beitrag: 15.06.07, 17:20
  4. Antworten: 12
    Letzter Beitrag: 22.04.07, 09:03
  5. Antworten: 4
    Letzter Beitrag: 21.03.05, 11:08