Chapitre 2 Programmation réseau par JAVA phttpd Collecte d'exceptions en 3 endroits

phttpd "Programmation réseau TCP / IP JAVA comprise depuis les bases" par Tomohiro Odaka, Ohm

基礎.png

Collecte d'exceptions à trois endroits de phttpd.java dans "Chapitre 2 Programmation réseau avec JAVA"

phttpd: pseudo démon de protocole de transfert d'hyper texte (traitement pseudo HTTP)

Voir ci-dessous pour les méthodes d'installation, de compilation et de débogage

"Programmation réseau TCP / IP JAVA comprise depuis les bases" Compilé avec Eclipse. Déboguer avec Wireshark. https://qiita.com/drafts/14519536b827fdadb32e/

Les éléments suivants ont été modifiés. Pour les lignes modifiées, écrivez /// à la fin de la ligne.

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);
    }
  }
}

Des exceptions pourraient être collectées dans les trois endroits.

error 1

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

Je n'ai pas créé de fichier index.html.

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

J'ai lancé Wireshark avant de courir. http.png

En regardant Wireshark, il envoie et reçoit jusqu'à </ html>. L'affichage du navigateur (Safari version 11.0.1 (12604.3.5.1.1)) est page.png

Oh, c'est http / 0.9, donc ce n'est pas bon. Je cherche un moyen de l'envoyer à http / 1.1.

error 3

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

Il semble qu'il ait commencé le suivant sans terminer le phttpd précédemment lancé.

$ 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

Pourquoi les deux fonctionnent-ils? À d'autres moments, je ne pouvais pas commencer la prochaine fois, donc il n'y en a qu'un.

<Cette section est sur le point d'être écrite. Je vais l'ajouter un par un. > "Programmation réseau TCP / IP JAVA comprise depuis les bases" Compilé avec Eclipse. Déboguer avec Wireshark. https://qiita.com/drafts/14519536b827fdadb32e/ "Recommandé pour ceux qui n'ont jamais touché à JAVA. Il est toujours valable après 20 ans." Depuis que j'ai écrit ça, je dois le réparer pour que ça marche.

Réussir le spécialiste du réseau d'examen d'ingénieur en traitement de l'information https://qiita.com/kaizen_nagoya/items/407857392ca5c5677ee4

Port d'émulateur de communication https://qiita.com/drafts/ce505bbea4229b83e93b

Compatible Macintosh "Création d'analyseurs TCP / IP et analyse de paquets comprise depuis les bases Compatible Linux / FreeBSD" Tomohiro Odaka Ohm https://qiita.com/kaizen_nagoya/items/517411b42fc5ceabd581

Recommended Posts

Chapitre 2 Programmation réseau par JAVA phttpd Collecte d'exceptions en 3 endroits
Programmation utilisant le type de somme directe en Java (news)
Programmation par contraintes en Java
Premiers pas avec Java Collection
Techniques de gestion des exceptions en Java
Collecte de copies approfondies en Java
[Java] Termes de base en programmation
Accéder à l'interface réseau avec Java
Analyse morphologique en Java avec Kuromoji
Tweak Markdown avec Java flexmark-java
Java Performance Chapitre 5 Bases de la récupération de place
[Java] Rédiger un quiz de programmation SET INTERSECTION avec StreamAPI en une seule ligne
Utilisez OpenCV_Contrib (ArUco) avec Java! (Partie 2-Programmation)
Méthode de concurrence en Java avec exemple de base
Lire le fichier xlsx en Java avec Selenium
Java (gestion des exceptions, threading, collection, fichier IO)
Diviser une chaîne avec ". (Dot)" en Java
Gérez d'énormes JSON avec Java Lambda