Avatar billede Martin Hansen Nybegynder
21. februar 2004 - 18:54 Der er 17 kommentarer og
1 løsning

Netværksprogrammering med socket

Jeg er lige startet på noget netværksprogrammering, og det jeg gerne vil lave er et serverprogram som modtager en tekst-streng fra en client, og udskriver denne.

Dette virker fint når begge programmer kører på den samme computer, men jeg får denne fejl når jeg kører det på to pc'er:

java.net.SocketException: Connection reset

Nogen der ved hvad dette skyldes?
Avatar billede gladmhensk Nybegynder
21. februar 2004 - 19:21 #1
Husker du at slå alle firewalls fra ? Husk også at slå NAT fra hvis de er koblet til router....
Avatar billede arne_v Ekspert
21. februar 2004 - 20:20 #2
Nu synes jeg ikke at man behøver at slå firewall & NAT fra.

Man kunne jo også nøjes med at lukke op for den ene port man skal bruge.

Men sikkerheds indstillinger er en mulig årsag.

Men jeg ville gerne se komplet fejl tekst på client og have verificeret at der
ikke er fejl på server.

Det sidste kunne nemlig også være årsag.
Avatar billede Martin Hansen Nybegynder
21. februar 2004 - 21:12 #3
Jeg bruger ikke firewall...

Vil det siga jeg skal natte porten til serveren eller?
Avatar billede Martin Hansen Nybegynder
21. februar 2004 - 21:12 #4
dette er den eneste tekst jeg får:

java.net.SocketException: Connection reset
Avatar billede Martin Hansen Nybegynder
21. februar 2004 - 21:13 #5
Der er en router
Avatar billede arne_v Ekspert
21. februar 2004 - 21:13 #6
Hvis client er udenfor din router, serveren indenfor og din router bruger NAT, så
skal du forwarde den port til server maskinen i din router.
Avatar billede Martin Hansen Nybegynder
21. februar 2004 - 21:19 #7
begge min computere sidder til en switch der er forbundet til en router, så behøver jeg ikke nat..
Avatar billede Martin Hansen Nybegynder
21. februar 2004 - 21:26 #8
Vil du se koden?
Avatar billede arne_v Ekspert
21. februar 2004 - 21:27 #9
Hvis den er tilpas lille til at man kan overskue den: ja tak
Avatar billede Martin Hansen Nybegynder
21. februar 2004 - 21:29 #10
SERVEREN:

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

public class server2
{
    public static void main(String[] args)
    {
        try
        {
            ServerSocket serverSocket = new ServerSocket(5555);

            while(true)
            {
                Socket incoming = serverSocket.accept();

                ser pt = new ser(incoming);

                pt.start();
            }
        }
        catch(Exception e){System.out.println("Error 1 ! - " + e.toString());}
    }
}

class ser extends Thread
{
    Socket incoming;

    ser(Socket incoming)
    {
        this.incoming = incoming;
    }

    public void run()
    {
        try
        {
            DataInputStream in = new DataInputStream(incoming.getInputStream());

            PrintStream out = new PrintStream(incoming.getOutputStream());

            String str = in.readLine();

            System.out.println(str);

        }

        catch(Exception e){System.out.println("Error 2 ! - " + e.toString());}

        try
        {
            incoming.close();
        }
        catch(Exception e){System.out.println("Error 3 ! - " + e.toString());}
    }
}
Avatar billede Martin Hansen Nybegynder
21. februar 2004 - 21:29 #11
CLIENTEN:

import java.net.*;
import java.io.*;

public class client
{
    DataInputStream input;

    public static void main(String[] args)
    {
        try
        {
            Socket socket = new Socket("10.0.0.2", 5555);

            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

            PrintStream outstream = new PrintStream(socket.getOutputStream());

            outstream.println("Hej du der");

        }
        catch(Exception e){System.out.println(e);}
    }
}
Avatar billede arne_v Ekspert
21. februar 2004 - 22:08 #12
Har du lagt mærke til at DataInputStream readLine er depracated ?
Avatar billede arne_v Ekspert
21. februar 2004 - 22:16 #13
Hos mig virker koden fint på 2 forskellige maskiner ...
Avatar billede Martin Hansen Nybegynder
21. februar 2004 - 22:18 #14
det har jeg lagt mærke til, det virker hos dig?
Avatar billede Martin Hansen Nybegynder
21. februar 2004 - 22:19 #15
min server udskriver bare denne fejl: java.net.SocketException: Connection reset istedet for teksten.

der hvor jeg udskriver error 2
Avatar billede 5floor Nybegynder
21. februar 2004 - 23:12 #16
Har haft det problem da jeg afviklede tilsvarende kode på en maskine.
Her havde jeg også en server og ne klient.

Mit problem var, at klienten lukkede forbindelsen til serveren, hvilket resulterede i samme fejlmeddelse som din...jeg havde ikke "pakket" en sådan pludselig afslutning pænt ind i en gang try/catch.

Måske det kan hjælpe i din fejlsøsgning?

Hvem sagde DØK 2.år.....?

God weekend

Mads
Avatar billede Martin Hansen Nybegynder
24. februar 2004 - 19:09 #17
Det stinker af DØK 2. år...  ;-)

Er der ikke en der kan smide et svar, så jeg kan lukke spørgsmålet....

Det virkede med lidt bedre try/catch, denne del af clienten skulle have sin egen try/catch:

        String str = in.readLine();

        System.out.println(str);

Hygge....
Avatar billede Martin Hansen Nybegynder
26. februar 2004 - 23:12 #18
Lukket--------
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