Lesen Sie die gesamten Daten mit Golang net.Conn.Lesen
So, ich Baue eine Netzwerk-app Gehen, und ich habe gesehen, dass Conn.Read
liest in einem begrenzten byte-array, welches ich erstellt hatte, mit make([]byte, 2048)
und jetzt die problem ist, dass ich don T wissen, die genaue Länge, den Inhalt, so könnte es zu viel oder nicht genug.
Meine Frage ist, wie kann ich Lesen Sie einfach die genaue Menge der Daten. Ich glaube, ich habe zu verwenden bufio
, aber ich bin mir nicht sicher.
Zeigen Sie uns, welche Art von Daten, die Sie versuchen zu Lesen, ansonsten ist es nur ein Schuss im Dunkeln.
InformationsquelleAutor user2563892 | 2014-06-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es hängt stark davon ab, was Sie versuchen zu tun, und welche Art von Daten Sie erwarten, zum Beispiel, wenn Sie nur wollen, um zu Lesen, bis die EOF-Sie könnte so etwas wie dieses:
//edit: zur Vollständigkeit halber und @fabrizioM tolle Anregung, die komplett übersprungen meine Meinung:
Wenn Sie möchten, kopieren Sie alle Inhalte, die Sie könnte auch io.Kopieren(conn, NewBuffer)
Mein Verständnis ist, dass conn.Read(buf) blockiert und Lesen entweder die volle Länge des Puffers, wenn möglich, oder bis zu dem Punkt, der ein EOF an dem Punkt n anders als cap(buf) - aber vielleicht das gleiche wie len(buf), wenn es erklärt wurde, mit 3 args. Ist das richtig?
Die Antwort von vially überlegen scheint, gibt es keinen nutzen für die Annahme einer der beiden Ansätze?
Nein, sein Ansatz ist richtig, und bevorzugt, der einzige Grund, würden Sie mir, wenn Sie arbeiten möchten, auf einen Puffer, anstatt die Scheibe.
InformationsquelleAutor OneOfOne
Können Sie die
ioutil.ReadAll
Funktion:Diese Funktion scheint gerade zu hängen, für mich, nie keine Antwort erhalten
du meinst die
whois
- Funktion, die ich schrieb, als ein Beispiel oder dieioutil.ReadAll
Funktion? Wenn es letzteres, es bedeutet wahrscheinlich, dass dieReader
Sie übergeben, in der weder erreicht EOF noch einen Fehler erhält.Beide fand ich heraus, was es für meine spezielle situation, aber ich versuchte zu Lesen, die Antwort auf eine IMAP-Verbindung, aber die Antwort ist nicht wirklich fertig, bis Sie es schließen sich also "hing" (später habe ich richtig gelesen, Linien, bis ich die Letzte Antwort und dann aufgehört zu Lesen, mehr-Linien)), aber meine einfügen dieser in eine leere, neue .go-Datei nie zurückgegeben keine Ergebnisse
InformationsquelleAutor vially
Können Sie Daten Lesen so etwas wie dieses:
InformationsquelleAutor 0xAX