Avatar billede trp79 Nybegynder
13. juli 2004 - 10:06 Der er 15 kommentarer og
1 løsning

Program der udskriver samtlige informationer på port 80

Hejsa
Jeg ville bare lige høre om det er muligt at lave et program der udskriver alle informationer, der sendes på port 80 eller om der i windows xp allerede findes et program til dette?

Hvis man selv skal lave det, hvordan griber man det så an? og er det nemt at lave sådan, at det kun er alle forespørgslerne (http://*), der udskrives?

Mvh
Torben
Avatar billede arne_v Ekspert
13. juli 2004 - 10:46 #1
Du kan lave et program som lytter på port 80, accepter connections
og udskriver alt hvad den modtager fra hver connection.

Det er bare lidt ServerSocket, Socket og Thread.

Hvis du vil have noget færdigt, så indeholder Apache Axis et
lille tool TCPMon som du kan sætte op til at lytte på port
f.eks. 8081 og forwarde til port 8080. Så sender du HTTP request
til, port 8081, den forwarder til web serveren på port 8080,
og svaren ryger tilbage samme vej og i TCPMon kan man se både request
og respons.
Avatar billede trp79 Nybegynder
13. juli 2004 - 10:52 #2
Det er vist nemmeste bare at bruge serversocket osv. så. Jeg prøver lige at gå i krig og vender tilbage, hvis det driller....
Avatar billede trp79 Nybegynder
13. juli 2004 - 11:45 #3
Nå, så er jeg stødt i problemer. Jeg har nu lavet en stump kode, der lytter på port 80 og opretter en tråd, hvorfra den så skulle udskrive.... men det funker ikke rigtigt :( Håber du vil kigge lidt på det:

*************************UdskrivPort80.java****************************
import java.net.*;
import java.io.*;
import java.lang.*;
import java.util.*;

public class UdskrivPort80
{
    Socket traede[] = new Socket[50];
    int i = 0;
    static Socket incoming;

  public UdskrivPort80()
  {
  }

    public void forbindelse(UdskrivPort80 s)
    {
        //Initializere netværks forbindelse
        try
        {
            ServerSocket serverSocket = new ServerSocket(80);

            //Start uendelig løkke indtil information kommer
            while(true)
            {
                //acepter besked
                incoming= serverSocket.accept();

                traede[i] = incoming;
                i++;

                thread(incoming, s);
            }
        }
        catch(Exception exc){System.out.println("fejl i UdskrivPort80.java...: "+ exc.toString());}
    }

    public void thread(Socket incoming, UdskrivPort80 s)
    {
        //opret ny tråd
        Traed t= new Traed(incoming, s);
        t.start();
    }
  public static void main(String[] args)
  {
        UdskrivPort80 s = new UdskrivPort80();
        s.forbindelse(s);

  }
}
**************************Slut UdskrivPort80.java*******************************

**************************Traed.java********************************************
import java.net.*;
import java.io.*;
import java.lang.*;
import java.util.*;

public class Traed extends Thread
{
    //Serversocket vi skriver til
    Socket incoming;
    UdskrivPort80 s;
 
  public Traed(Socket incoming, UdskrivPort80 s)
  {
        this.s= s;
        this.incoming= incoming; 
    System.out.println("Tråd oprettet: " +incoming.getInetAddress());
  }

    public void run()
    {
        while(incoming!=null)
    {
      try
      {
        //modtag input fra socket
        DataInputStream in = new DataInputStream(incoming.getInputStream());

        try
        {
          System.out.println(in.readLine());
        }
        catch(NoSuchElementException exc){System.out.println(exc);}

      }
      catch(Exception exc){System.out.println("Error!!!... i traed.java:"+ exc.toString());}
    }     
    //Luk forbidelsen
        try
        {
            incoming.close();
        }

        catch(Exception exc){System.out.println("Error!!!...efter lukket forbidelse:"+ exc.toString());}
    } 
}
**************************Slut Traed.java***************************************

Der sker ingenting når jeg går ind på en hjemmeside, dvs. der oprettes ikke engang en tråd, så fejlen må ligge ret tidligt i programmet.
Avatar billede arne_v Ekspert
13. juli 2004 - 12:02 #4
Connecter du til dit program eller til en hjemme side ?
Avatar billede arne_v Ekspert
13. juli 2004 - 12:02 #5
DataInputStream readLine er vist iøvrigt deprecated og afløset af BufferedReader readLine.
Avatar billede trp79 Nybegynder
13. juli 2004 - 12:08 #6
Ja DataInputStream readLine er deprecated, så den må jeg hellere få byttet ud...

Nej jeg connecter ikke til programmet eller en hjemmeside. Jeg kunne godt bare tænke mig at lave et program, som udskriver alle forespørgler, der laves i internetexplore. Men det er med henblik på at aflæse alle forespørgsler på en specifik hjemmeside, hvis det gør det nemmere?
Avatar billede trp79 Nybegynder
13. juli 2004 - 12:11 #7
"Men det er med henblik på at aflæse alle forespørgsler på en specifik hjemmeside, hvis det gør det nemmere?". Således, at jeg kan se hvilke hvilke http request, der bliver lavet på en hjemmeside - altså hvis http request, der bliver lavet når en bruger trykker på et link osv.
Avatar billede arne_v Ekspert
13. juli 2004 - 12:14 #8
Så skal du enten hav emodificeret dit program så når du modtager
en request connecter det til den rigtieg site og fungerer som transperent
gobetween.

Eller vælger noget som TCPMon der allerede har implementeret det.
Avatar billede trp79 Nybegynder
13. juli 2004 - 13:43 #9
Det blev til en tcpmon så. Hvis du er så flink at smide et svar arne, så er der points til dig.

Endnu engang mange tak for hjælpen, mvh
Torben
Avatar billede arne_v Ekspert
13. juli 2004 - 13:46 #10
OK
Avatar billede arne_v Ekspert
13. juli 2004 - 13:47 #11
TCPMon er faktisk er godt lille værktøj.

Og ideen er jo så simpel så den er genial. Sybase har lavet et tilsvarende
database tool, så man kan køre:
  database client----GUI monitor----database server
Avatar billede trp79 Nybegynder
13. juli 2004 - 13:52 #12
Den TCPMon du omtaler - er det et specifikt program? Jeg fandt nemlig bare TCPSpy på www.tucows.com

Måske man også skulle prøve at lege lidt med Sybases tilsvarende database tool, det lyder da super smart!
Avatar billede arne_v Ekspert
13. juli 2004 - 13:55 #13
Det er en del af Apache Axis (web service toolkit).

http://ws.apache.org/axis/
Avatar billede arne_v Ekspert
13. juli 2004 - 13:56 #14
http://ws.apache.org/axis/java/user-guide.html

Appendix : Using the Axis TCP Monitor (tcpmon)
Avatar billede arne_v Ekspert
13. juli 2004 - 13:57 #15
Desværre virker det Sybase tool kun med Sybase database (og måske Microsoft SQLServer).

Men andre database leverandører burde følge dette gode eksempel !
Avatar billede trp79 Nybegynder
13. juli 2004 - 14:03 #16
Tak for links og forklaring - jeg vil prøve at kigge lidt nærmere på det :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester