Avatar billede 1nz4n3 Nybegynder
24. september 2005 - 18:39 Der er 31 kommentarer

java skrive tilbage til client..

InputStream in = sock.getInputStream(); //Stream til indkommende data

OutputStream out = sock.getOutputStream(); //Stream til udgående data
in.write("hej");


det vil den ikke why man?
Avatar billede arne_v Ekspert
24. september 2005 - 18:41 #1
in.write("hej".getBytes());

eller så skal den OutputStream wrappes i en PrintWriter eller lignende
Avatar billede arne_v Ekspert
24. september 2005 - 18:42 #2
ofte er det iøvrigt godt med sockets at kalde flush efter write
Avatar billede 1nz4n3 Nybegynder
24. september 2005 - 18:45 #3
det vil den ikk

try {
        InputStream in = sock.getInputStream(); //Stream til indkommende data
        OutputStream out = sock.getOutputStream(); //Stream til udgående data


        int MAX_SIZE = 16384; //16k
        byte[] buffer = new byte[MAX_SIZE];
       
        while (true) {
        int read = in.read(buffer, 0, MAX_SIZE); //læs op til MAX_SIZE tegn.
       
        in.write("til server".getBytes());
        System.out.println("test: "+new String(buffer, 0, read));
       
        System.out.println("modtog  "+new String(buffer, 0, read));
        /* Hop ud af while-løkken hvis vi har læst mindre end MAX_SIZE */
        if (read < MAX_SIZE)
            break;
        }
Avatar billede arne_v Ekspert
24. september 2005 - 18:54 #4
in.write

skal vel også være

out.write
Avatar billede 1nz4n3 Nybegynder
24. september 2005 - 20:49 #5
ok her er min kode.. men når jeg har svaret tilbage til klienten udskriver den stadig samme output, why??


import java.net.Socket;
import java.net.UnknownHostException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

class TCPClient {

    public static void main(String[] args) {

    Socket sock=null;
    try {
        sock = new Socket("localhost", 80); //Opret forbindelse til localhost:10000
    } catch (UnknownHostException uhe) {
        System.out.println(".");
        uhe.printStackTrace();
        System.exit(1);
    } catch (IOException ioe) {
        System.out.println(".");
        ioe.printStackTrace();
        System.exit(1);
    }

    /* Nu har vi en forbindelse til fjerncomputeren */

    try {
        InputStream in = sock.getInputStream(); //Stream til indkommende data
        OutputStream out = sock.getOutputStream(); //Stream til udgående data


        int MAX_SIZE = 16384; //16k
        byte[] buffer = new byte[MAX_SIZE];
       
        while (true) {
        int read = in.read(buffer, 0, MAX_SIZE); //læs op til MAX_SIZE tegn.
       
        out.write("LOGIN".getBytes());
        System.out.println("svar: "+new String(buffer, 0, read));
        out.write("LOGIN".getBytes());
        System.out.println("svar: "+new String(buffer, 0, read));
        System.out.println(read);
        /* Hop ud af while-løkken hvis vi har læst mindre end MAX_SIZE */
        if (read < MAX_SIZE)
            break;
        }
        sock.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    }
}
Avatar billede arne_v Ekspert
24. september 2005 - 20:51 #6
du udskriver det samme svar 2 gange

skal du ikke læse en gang mere ?
Avatar billede 1nz4n3 Nybegynder
24. september 2005 - 20:54 #7
kan du ik lige lave det
Avatar billede 1nz4n3 Nybegynder
24. september 2005 - 20:57 #8
please... fatter intet
Avatar billede 1nz4n3 Nybegynder
24. september 2005 - 21:02 #9
skal du ikke læse en gang mere ?
hvad mener du med det
Avatar billede 1nz4n3 Nybegynder
24. september 2005 - 21:10 #10
HALLO PLEASE HJÆLP MIG.. BARE EN GANG!!
Avatar billede arne_v Ekspert
24. september 2005 - 21:15 #11
int read = in.read(buffer, 0, MAX_SIZE);    <---- læs noget fra socket
        out.write("LOGIN".getBytes()); <---- skriv LOGIN til socket
        System.out.println("svar: "+new String(buffer, 0, read)); <---- udskriv det du læste
        out.write("LOGIN".getBytes());  <---- skriv LOGIN til socket en gang mere
        System.out.println("svar: "+new String(buffer, 0, read)); <---- udskriv det du læste en gang mere
Avatar billede 1nz4n3 Nybegynder
24. september 2005 - 21:17 #12
ja men når den har vist outputtet skal jeg skrive login til serveren også vise det nye indhold..
kan du hjælpe mig med at gøre det
Avatar billede arne_v Ekspert
24. september 2005 - 21:33 #13
nye indhold ?
Avatar billede 1nz4n3 Nybegynder
24. september 2005 - 21:34 #14
ja.. jeg henter jo først noget fra klienten.. så bagefter skal jeg skrive login til den også igen bagefter skal den vise det nye output.. forstår du?
Avatar billede 1nz4n3 Nybegynder
24. september 2005 - 21:56 #15
hhallo??
Avatar billede arne_v Ekspert
24. september 2005 - 22:15 #16
tro det eller ej, men det hænder at folk har andet at lave end at svare her på E

og nej jeg forstår ikke
Avatar billede 1nz4n3 Nybegynder
24. september 2005 - 22:18 #17
jo hvis du skriver fx hej til serveren så svarer den måske tilbage med "hejsa" så skriver du til den "hvad mener du med hejsa" så svare den "jeg mener intet" bare et fx!!!!

hordan??
Avatar billede arne_v Ekspert
24. september 2005 - 22:21 #18
så skal du vel have en sekvens:

socket write
socket read
print
socket write
socket read
print
Avatar billede 1nz4n3 Nybegynder
24. september 2005 - 22:24 #19
det da også det jeg gør her

  out.write("LOGIN".getBytes()); her skriver den

        System.out.println("svar: "+new String(buffer, 0, read)); her læser den
        out.write("LOGIN".getBytes()); her skriver den

        System.out.println("svar: "+new String(buffer, 0, read)); her læser den
Avatar billede arne_v Ekspert
24. september 2005 - 22:26 #20
nej

System.out.println("svar: "+new String(buffer, 0, read)); her læser den

læser ikke noget

den printer bare det som blev læst tidligere

int read = in.read(buffer, 0, MAX_SIZE);

læser
Avatar billede 1nz4n3 Nybegynder
24. september 2005 - 22:27 #21
hva ska jeg så gøre.. kan du ikke lige nok lave det.. så kan vi også få lukket..
Avatar billede mikkelbm Nybegynder
24. september 2005 - 22:39 #22
Eksperten er i mine øjne til for at man kan blive hjulpet på vej med et problem man har, og ikke til færdige løsninger.

Men det er blot min spæde mening :)
Avatar billede arne_v Ekspert
24. september 2005 - 22:41 #23
du skal bruge in.read hver gang du skal læse
Avatar billede 1nz4n3 Nybegynder
24. september 2005 - 22:54 #24
fx?

System.out.println("svar: "+new String(buffer, 0, read));
        out.write("LOGIN".getBytes());
        in.read();
        out.write("post".getBytes());

        System.out.println("svar: "+new String(buffer, 0, read));
        in.read();

for det virker ikke
Avatar billede arne_v Ekspert
24. september 2005 - 22:56 #25
nej fordi read skal have nogle argumenter
Avatar billede 1nz4n3 Nybegynder
24. september 2005 - 22:56 #26
ja kan jo ikke java så kan du sige hvad der skal stå så?
Avatar billede arne_v Ekspert
24. september 2005 - 22:57 #27
hvis ikke du kan java hvorfor skal du så skrive et Java program ?
Avatar billede 1nz4n3 Nybegynder
24. september 2005 - 22:58 #28
Kan du ikke bare sige det hurtigt..? skal nemlig bruge det
Avatar billede arne_v Ekspert
24. september 2005 - 23:04 #29
den skal sikkert se ud som:

int read = in.read(buffer, 0, MAX_SIZE);

igen, men jeg tvivler på at du får et Java netværks program til at virke hvis ikke
du kan noget Java !
Avatar billede 1nz4n3 Nybegynder
24. september 2005 - 23:09 #30
while (true) {
        int read = in.read(buffer, 0, MAX_SIZE); //læs op til MAX_SIZE tegn.
       
     
        System.out.println("svar: "+new String(buffer, 0, read));
        out.write("LOGIN".getBytes());
        read = in.read(buffer, 0, MAX_SIZE);

        out.write("post".getBytes());

        System.out.println("svar: "+new String(buffer, 0, read));
        in.read();


så går den istår når den skal til read!! why man?
Avatar billede jakoba Nybegynder
25. september 2005 - 01:04 #31
Fordi den venter på a du skal give den noget at læse (og trykker retur)
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