Kapitel 2 Netzwerkprogrammierung von JAVA phttpd Ausnahmesammlung an 3 Stellen

phttpd "TCP / IP JAVA-Netzwerkprogrammierung aus den Grundlagen verstanden" von Tomohiro Odaka, Ohm

基礎.png

Ausnahmesammlung an drei Stellen von phttpd.java in "Kapitel 2 Netzwerkprogrammierung mit JAVA"

phttpd: Pseudo-Hyper-Text-Übertragungsprotokoll-Daemon (Pseudo-HTTP-Verarbeitung)

Im Folgenden finden Sie Installations-, Kompilierungs- und Debugging-Methoden

"TCP / IP JAVA-Netzwerkprogrammierung aus den Grundlagen verstanden" Kompiliert mit Eclipse. Debuggen mit Wireshark. https://qiita.com/drafts/14519536b827fdadb32e/

Die folgenden Elemente wurden geändert. Schreiben Sie für geänderte Zeilen /// am Ende der Zeile.

phttpd.java


import java.io.*;
import java.net.*;
/// remove java.util.*

public class phppd {
 public static void main(String args[]) {
    ServerSocket servsock = null; 
    Socket sock;  
    OutputStream out;
    BufferedReader in;
    FileInputStream infile=null;
    int buff_size = 1024;///
    byte buff[] =new byte[buff_size];
    boolean cont =true;
    int i; // loop counter
    int backlog=300; int htpp=8080;///
    try{
      servsock = new ServerSocket(htpp, backlog);///
      while(true){
        sock = servsock.accept();  
        System.out.println("Connection Request"+(sock.getInetAddress()).getHostName());
        try {
         infile=new FileInputStream(args[0]);
        } catch(Exception e){
         System.out.println("1");///
         System.out.println(e);///
         System.exit(1);
        }
        in=new BufferedReader(new InputStreamReader(sock.getInputStream()));;
        out=sock.getOutputStream();
        for(i=0;i<2;++i) {///
          in.readLine();
        }///
        cont=true;
        while(cont) {
         try {
          int n=infile.read(buff);
          System.out.println("4");///
          System.out.println(buff);///
          out.write(buff,0,n);
         } catch(Exception e){
          System.out.println("2:");///
          System.out.println(e);///
          cont=false;
         }
        }
        sock.close();
        infile.close();
      }
    } catch(IOException e){
     System.out.println("3");///
     System.out.println(e);///
     System.exit(1);
    }
  }
}

Ausnahmen konnten an allen drei Standorten gesammelt werden.

error 1

Connection Request localhost
1
java.io.FileNotFoundException: index.html (No such file or directory)

Ich habe keine index.html-Datei erstellt.

error 2

2
Connection Request localhost
2
java.net.SocketException: Broken pipe (Write failed)

error 2-1

Connection Request localhost
2
java.lang.ArrayIndexOutOfBoundsException: len == -1 off == 0 buffer length == 1024

Ich habe Wireshark gestartet, bevor ich gelaufen bin. http.png

Bei Wireshark werden bis zu </ html> gesendet und empfangen. Die Anzeige des Browsers (Safari Version 11.0.1 (12604.3.5.1.1)) ist page.png

Oh, es ist http / 0.9, also ist es nicht gut. Ich suche nach einer Möglichkeit, es unter http / 1.1 zu senden.

error 3

3
java.net.BindException: Address already in use (Bind failed)

Es scheint, dass er den nächsten gestartet hat, ohne den zuvor gestarteten phttpd zu beenden.

$ ps -ax | grep phppd
10427 ??         0:08.61 /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/bin/java -Dfile.encoding=UTF-8 -classpath /Users/administrator/eclipse-workspace/phppd/bin phppd index.html
10714 ??         0:07.68 /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/bin/java -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:51095 -Dfile.encoding=UTF-8 -classpath /Users/administrator/eclipse-workspace/phppd/bin phppd index.html
13190 ttys000    0:00.00 grep phppd

$ su Administrator
Password:
$ kill -9 10427
$ kill -9 10714

Warum arbeiten beide? Zu anderen Zeiten konnte ich das nächste Mal nicht starten, daher gibt es nur einen.

<Dieser Abschnitt wird gerade geschrieben. Ich werde es eins nach dem anderen hinzufügen. > "TCP / IP JAVA-Netzwerkprogrammierung aus den Grundlagen verstanden" Kompiliert mit Eclipse. Debuggen mit Wireshark. https://qiita.com/drafts/14519536b827fdadb32e/ "Empfohlen für diejenigen, die JAVA noch nie berührt haben. Es ist auch nach 20 Jahren noch gültig." Seit ich das geschrieben habe, muss ich es reparieren, damit es funktioniert.

Bestanden den Netzwerkspezialisten des Information Processing Engineer Examination Network https://qiita.com/kaizen_nagoya/items/407857392ca5c5677ee4

Kommunikationsemulator-Port https://qiita.com/drafts/ce505bbea4229b83e93b

Macintosh-kompatibel "TCP / IP-Analysator-Erstellung und Paketanalyse aus den Grundlagen Linux / FreeBSD-kompatibel" Tomohiro Odaka Ohm https://qiita.com/kaizen_nagoya/items/517411b42fc5ceabd581

Recommended Posts

Kapitel 2 Netzwerkprogrammierung von JAVA phttpd Ausnahmesammlung an 3 Stellen
Programmierung mit dem direkten Summentyp in Java (Nachrichten)
Einschränkungsprogrammierung in Java
Erste Schritte mit Java Collection
Ausnahmebehandlungstechniken in Java
Deep Copy Collection in Java
[Java] Grundbegriffe der Programmierung
Greifen Sie mit Java auf die Netzwerkschnittstelle zu
Morphologische Analyse in Java mit Kuromoji
Tweak Markdown mit Java Flexmark-Java
Java-Leistung Kapitel 5 Grundlagen der Garbage Collection
[Java] Schreiben Sie ein Programmierquiz SET INTERSECTION mit StreamAPI in eine Zeile
Verwenden Sie OpenCV_Contrib (ArUco) mit Java! (Teil 2-Programmierung)
Parallelitätsmethode in Java mit grundlegendem Beispiel
Lesen Sie die xlsx-Datei in Java mit Selenium
Java (Ausnahmebehandlung, Threading, Sammlung, Datei-E / A)
Teilen Sie eine Zeichenfolge in Java mit ". (Dot)"
Behandeln Sie große JSON mit Java Lambda