Avatar billede kohaar Nybegynder
10. december 2003 - 10:59 Der er 11 kommentarer og
1 løsning

Hent data fra netværk

Jeg skal modtage noget data fra et andet program der sender ud til localhost port 3000. Hvordan henter jeg lige det ind i java? Et kodeeksemple vil være lækkert..
Avatar billede arne_v Ekspert
10. december 2003 - 11:02 #1
Du laver vel et program der laver en ServerSocket på port 2000,
accepter en connection og laver en inputstream udfra Socket og
læser ?
Avatar billede arne_v Ekspert
10. december 2003 - 11:04 #2
ServerSocket ss = new ServerSocket(3000);
        Socket s = ss.accept();
        InputStream is = s.getInputStream();
        int c;
        while((c = is.read()) >= 0) {
            // process byte
        }
Avatar billede kohaar Nybegynder
10. december 2003 - 11:06 #3
Hehe... Ja. Det lyder jo simpelt, men er bange for at jeg ikke har nogle ide om hvordan mang gør disse ting. Kan godt lave en inputstream skal det siges.

Jeg har et program, som det er nu modtager data gennem en dos pipe "|", men den buffer helt vildt, så det køre vildt dårligt. Jeg kan få det andet program til at sende over netværk, og tænkte at det var en mulig løsning. Fik nemlig at vide at java kunne modtage data fra netværket.
Kan du give mig et eksempel?
Avatar billede kohaar Nybegynder
10. december 2003 - 11:07 #4
Hehe.. Der var du hurtigere... Prøver det lige...
Avatar billede arne_v Ekspert
10. december 2003 - 11:10 #5
Hvis data er tekst kan man smække en BufferedReader ovenpå en input stream
og læse linier.
Avatar billede kohaar Nybegynder
10. december 2003 - 11:25 #6
import java.net.*;
import java.io.*;

public class ShowFrame
{
public static void main(String[] arg)
  {

  }
  public void Showframe() throws IOException
  {
            try {
            ServerSocket ss = new ServerSocket(3000);
            Socket s = ss.accept();
            InputStream is = s.getInputStream();
            int c;
            while((c = is.read()) >= 0) {
              //Vil gerne lige have skrevet ud hvad jeg får ind
            }

                    } catch (IOException e) {

                      e.printStackTrace();
        }
  }

      public void test() throws IOException
      {


  }
}
Avatar billede kohaar Nybegynder
10. december 2003 - 11:25 #7
Føler mig lidt dum, men kan du få den til at skrive de data ud jeg får ind?
Avatar billede arne_v Ekspert
10. december 2003 - 11:27 #8
System.out.println(c);

vil udskrive værdien af hver byte.
Avatar billede arne_v Ekspert
10. december 2003 - 11:28 #9
F.eks.

StringBuffer sb = new StringBuffer("");
while((c = is.read()) >= 0) {
    sb.append((char)c);
}
System.out.println(sb.toString());

hvis det er mere tekst.

[læs dog tidligere kommentar om BufferedReader]
Avatar billede arne_v Ekspert
10. december 2003 - 11:29 #10
Og et svar
Avatar billede kohaar Nybegynder
10. december 2003 - 11:30 #11
Ahh... Havde jeg ikke lige set :-)
Avatar billede kohaar Nybegynder
10. december 2003 - 11:33 #12
Det virker... Kanont.. Du styrer altså for vildt :-)
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