@@ -35,7 +35,7 @@ $ cargo new hello
35
35
$ cd hello
36
36
```
37
37
38
- Gib nun den Code in Codeblock 20 -1 in _ src/main.rs_ ein, um zu beginnen. Dieser
38
+ Gib nun den Code in Codeblock 21 -1 in _ src/main.rs_ ein, um zu beginnen. Dieser
39
39
Code lauscht unter der lokalen Adresse ` 127.0.0.1:7878 ` auf eingehende
40
40
TCP-Ströme (TCP streams). Wenn er einen eingehenden Strom erhält, wird er
41
41
` Verbindung hergestellt! ` ausgeben.
@@ -56,7 +56,7 @@ fn main() {
56
56
}
57
57
```
58
58
59
- <span class =" caption " >Codeblock 20 -1: Warten auf eingehende Ströme und Ausgeben
59
+ <span class =" caption " >Codeblock 21 -1: Warten auf eingehende Ströme und Ausgeben
60
60
einer Nachricht, wenn wir einen Strom empfangen</span >
61
61
62
62
Mit ` TcpListener ` können wir unter der Adresse ` 127.0.0.1:7878 ` auf
@@ -150,7 +150,7 @@ und dann mit der Verbindung etwas zu machen, werden wir eine neue Funktion zur
150
150
Verarbeitung von Verbindungen anfangen. In dieser neuen Funktion
151
151
` handle_connection ` lesen wir Daten aus dem TCP-Strom und geben sie aus, sodass
152
152
wir sehen können, welche Daten vom Browser gesendet werden. Ändere den Code so,
153
- dass er wie Codeblock 20 -2 aussieht.
153
+ dass er wie Codeblock 21 -2 aussieht.
154
154
155
155
<span class =" filename " >Dateiname: src/main.rs</span >
156
156
@@ -182,7 +182,7 @@ fn handle_connection(mut stream: TcpStream) {
182
182
}
183
183
```
184
184
185
- <span class =" caption " >Codeblock 20 -2: Lesen aus dem ` TcpStream ` und Ausgeben
185
+ <span class =" caption " >Codeblock 21 -2: Lesen aus dem ` TcpStream ` und Ausgeben
186
186
der Daten</span >
187
187
188
188
Wir bringen ` std::io::prelude ` und ` std::io::BufReader ` in den
@@ -331,7 +331,7 @@ Der Statuscode 200 ist die Standard-Erfolgsantwort. Der Text ist eine winzige
331
331
erfolgreiche HTTP-Antwort. Lass uns dies als Antwort auf eine erfolgreiche
332
332
Anfrage in den Strom schreiben! Entferne aus der Funktion ` handle_connection `
333
333
das ` println! ` , das die Anfragedaten ausgegeben hat, und ersetze es durch den
334
- Code in Codeblock 20 -3.
334
+ Code in Codeblock 21 -3.
335
335
336
336
<span class =" filename " >Dateiname: src/main.rs</span >
337
337
@@ -365,7 +365,7 @@ fn handle_connection(mut stream: TcpStream) {
365
365
}
366
366
```
367
367
368
- <span class =" caption " >Codeblock 20 -3: Schreiben einer kleinen erfolgreichen
368
+ <span class =" caption " >Codeblock 21 -3: Schreiben einer kleinen erfolgreichen
369
369
HTTP-Antwort in den Strom</span >
370
370
371
371
Die erste neue Zeile definiert die Variable ` response ` , die die Daten der
@@ -388,7 +388,7 @@ Hand programmiert!
388
388
Lass uns die Funktionalität für die Rückgabe von mehr als einer leeren Seite
389
389
implementieren. Erstelle die neue Datei _ hello.html_ in der Wurzel deines
390
390
Projektverzeichnisses, nicht im Verzeichnis _ src_ . Du kannst beliebiges HTML
391
- eingeben, das du willst; Codeblock 20 -4 zeigt eine Möglichkeit.
391
+ eingeben, das du willst; Codeblock 21 -4 zeigt eine Möglichkeit.
392
392
393
393
<span class =" filename " >Dateiname: hello.html</span >
394
394
@@ -406,12 +406,12 @@ eingeben, das du willst; Codeblock 20-4 zeigt eine Möglichkeit.
406
406
</html >
407
407
```
408
408
409
- <span class =" caption " >Codeblock 20 -4: Eine Beispiel-HTML-Datei, die in einer
409
+ <span class =" caption " >Codeblock 21 -4: Eine Beispiel-HTML-Datei, die in einer
410
410
Antwort zurückgegeben werden soll</span >
411
411
412
412
Dies ist ein minimales HTML5-Dokument mit einer Überschrift und etwas Text. Um
413
413
dies vom Server zurückzugeben, wenn eine Anfrage empfangen wird, modifizieren
414
- wir ` handle_connection ` wie in Codeblock 20 -5 gezeigt, um die HTML-Datei zu
414
+ wir ` handle_connection ` wie in Codeblock 21 -5 gezeigt, um die HTML-Datei zu
415
415
lesen, sie der Antwort als Rumpf hinzuzufügen und sie zu senden.
416
416
417
417
<span class =" filename " >Dateiname: src/main.rs</span >
@@ -453,7 +453,7 @@ fn handle_connection(mut stream: TcpStream) {
453
453
}
454
454
```
455
455
456
- <span class =" caption " >Codeblock 20 -5: Senden des Inhalts von _ hello.html_ als
456
+ <span class =" caption " >Codeblock 21 -5: Senden des Inhalts von _ hello.html_ als
457
457
Rumpf der Antwort</span >
458
458
459
459
Wir haben ` fs ` zur ` use ` -Deklaration hinzugefügt, um das Dateisystemmodul der
@@ -484,7 +484,7 @@ Im Moment wird unser Webserver das HTML in der Datei zurückgeben, unabhängig
484
484
davon, was der Client angefragt hat. Fügen wir Funktionen hinzu, um zu
485
485
überprüfen, ob der Browser ` / ` anfragt, bevor er die HTML-Datei zurückgibt, und
486
486
um einen Fehler zurückzugeben, wenn der Browser etwas anderes anfragt. Dazu
487
- müssen wir ` handle_connection ` modifizieren, wie in Codeblock 20 -6 gezeigt.
487
+ müssen wir ` handle_connection ` modifizieren, wie in Codeblock 21 -6 gezeigt.
488
488
Dieser neue Code prüft den Inhalt der erhaltenen Anfrage, ob ` / ` angefragt
489
489
wird, und fügt ` if ` - und ` else ` -Blöcke hinzu, um die Anfragen unterschiedlich
490
490
zu behandeln.
@@ -530,15 +530,15 @@ fn handle_connection(mut stream: TcpStream) {
530
530
}
531
531
```
532
532
533
- <span class =" caption " >Codeblock 20 -6: Behandlung von Anfragen an ` / ` anders als
533
+ <span class =" caption " >Codeblock 21 -6: Behandlung von Anfragen an ` / ` anders als
534
534
andere Anfragen</span >
535
535
536
536
Wir werden uns nur die erste Zeile der HTTP-Anfrage ansehen. Anstatt also die
537
537
gesamte Anfrage in einen Vektor zu lesen, rufen wir ` next ` auf, um das erste
538
538
Element aus dem Iterator zu erhalten. Das erste ` unwrap ` kümmert sich um die
539
539
` Option ` und hält das Programm an, wenn der Iterator keine Elemente hat. Das
540
540
zweite ` unwrap ` behandelt das ` Result ` und hat den gleichen Effekt wie das
541
- ` unwrap ` in ` map ` in Codeblock 20 -2.
541
+ ` unwrap ` in ` map ` in Codeblock 21 -2.
542
542
543
543
Als nächstes überprüfen wir ` request_line ` , um zu sehen, ob es der Anfragezeile
544
544
einer GET-Anfrage mit dem Pfad ` / ` entspricht. Ist dies der Fall, gibt der
@@ -551,9 +551,9 @@ bedeutet das, dass wir eine andere Anfrage erhalten haben. Wir werden dem
551
551
Führe diesen Code jetzt aus und frage _ 127.0.0.1:7878_ an; du solltest das HTML
552
552
in _ hello.html_ erhalten. Wenn du eine andere Anfrage stellst, z.B.
553
553
_ 127.0.0.1:7878/something-else_ , erhältst du einen Verbindungsfehler, wie du
554
- ihn beim Ausführen des Codes in Codeblock 20 -1 und Codeblock 20 -2 gesehen hast.
554
+ ihn beim Ausführen des Codes in Codeblock 21 -1 und Codeblock 21 -2 gesehen hast.
555
555
556
- Fügen wir nun den Code in Codeblock 20 -7 in den ` else ` -Block ein, um eine
556
+ Fügen wir nun den Code in Codeblock 21 -7 in den ` else ` -Block ein, um eine
557
557
Antwort mit dem Statuscode 404 zurückzugeben, der signalisiert, dass der Inhalt
558
558
für die Anfrage nicht gefunden wurde. Wir geben auch etwas HTML für eine Seite
559
559
zurück, die im Browser dargestellt werden soll, um dem Endbenutzer die Antwort
@@ -607,14 +607,14 @@ anzuzeigen.
607
607
# }
608
608
```
609
609
610
- <span class =" caption " >Codeblock 20 -7: Antworten mit Statuscode 404 und einer
610
+ <span class =" caption " >Codeblock 21 -7: Antworten mit Statuscode 404 und einer
611
611
Fehlerseite, wenn etwas anderes als ` / ` angefragt wurde</span >
612
612
613
613
Hier hat unsere Antwort eine Statuszeile mit Statuscode 404 und der
614
614
Begründungsphrase ` NOT FOUND ` (nicht gefunden). Der Rumpf der Antwort wird das
615
615
HTML in der Datei _ 404.html_ sein. Du musst neben _ hallo.html_ eine Datei
616
616
_ 404.html_ für die Fehlerseite erstellen; auch hier kannst du jedes beliebige
617
- HTML verwenden oder das Beispiel-HTML in Codeblock 20 -8.
617
+ HTML verwenden oder das Beispiel-HTML in Codeblock 21 -8.
618
618
619
619
<span class =" filename " >Dateiname: 404.html</span >
620
620
@@ -632,7 +632,7 @@ HTML verwenden oder das Beispiel-HTML in Codeblock 20-8.
632
632
</html >
633
633
```
634
634
635
- <span class =" caption " >Codeblock 20 -8: Beispielinhalt für die Seite, die mit
635
+ <span class =" caption " >Codeblock 21 -8: Beispielinhalt für die Seite, die mit
636
636
jeder 404-Antwort zurückgesendet werden soll</span >
637
637
638
638
Lass deinen Server mit diesen Änderungen erneut laufen. Die Anfrage
@@ -648,7 +648,7 @@ einzigen Unterschiede sind die Statuszeile und der Dateiname. Lass uns den Code
648
648
prägnanter gestalten, indem wir diese Unterschiede in separate ` if ` - und
649
649
` else ` -Zeilen herausziehen, die die Werte der Statuszeile und des Dateinamens
650
650
Variablen zuweisen; wir können diese Variablen dann bedingungslos im Code
651
- verwenden, um die Datei zu lesen und die Antwort zu schreiben. Codeblock 20 -9
651
+ verwenden, um die Datei zu lesen und die Antwort zu schreiben. Codeblock 21 -9
652
652
zeigt den resultierenden Code nach dem Ersetzen der großen ` if ` - und
653
653
` else ` -Blöcke.
654
654
@@ -695,7 +695,7 @@ fn handle_connection(mut stream: TcpStream) {
695
695
}
696
696
```
697
697
698
- <span class =" caption " >Codeblock 20 -9: Refaktorieren der ` if ` - und
698
+ <span class =" caption " >Codeblock 21 -9: Refaktorieren der ` if ` - und
699
699
` else ` -Blöcke, sodass sie nur den Code enthalten, der sich zwischen den beiden
700
700
Fällen unterscheidet</span >
701
701
@@ -710,8 +710,8 @@ Der zuvor duplizierte Code befindet sich jetzt außerhalb der Blöcke `if` und
710
710
einfacher, den Unterschied zwischen den beiden Fällen zu erkennen, und es
711
711
bedeutet, dass wir nur einen Ort haben, an dem wir den Code aktualisieren
712
712
müssen, wenn wir ändern wollen, wie das Lesen der Datei und das Schreiben der
713
- Antwort funktionieren. Das Verhalten des Codes in Codeblock 20 -9 ist dasselbe
714
- wie in Codeblock 20 -7.
713
+ Antwort funktionieren. Das Verhalten des Codes in Codeblock 21 -9 ist dasselbe
714
+ wie in Codeblock 21 -7.
715
715
716
716
Fantastisch! Wir haben jetzt einen einfachen Webserver mit etwa 40 Zeilen
717
717
Rust-Code, der auf eine Anfrage mit einer Inhaltsseite antwortet und auf alle
0 commit comments