[ krstak84 @ 09.03.2009. 05:45 ] @
Imam problem, ali rekao bih da je resenje jako jednostavno. Zapravo napravio sam malu chat aplikaciju gde klijent i server komuniciraju preko ip adrese. Evo i koda:

Code:


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

abstract class SC {
    public void start(){}
    public void start(String address){}
}

class Client extends SC{

    public void start(String ipad){
        try{
            Socket link = new Socket(ipad, 7904);
            System.out.println("Konekcija uspostavljena");
            Scanner input = new Scanner(link.getInputStream());
            PrintWriter output = new PrintWriter(link.getOutputStream(),true);

            Scanner us = new Scanner(System.in);
            String poruka, odgovor;

            System.out.print("Unesi poruku : ");
            poruka = us.nextLine();
            output.println(poruka);
            odgovor = input.nextLine();
            System.out.println("\nSERVER> "+odgovor);
        }catch(Exception e){

        }
    }
}
class Server extends SC{


    public void start(){
        try{
            ServerSocket soc = new ServerSocket(7904);
            Socket socket = soc.accept();
            Scanner input = new Scanner(socket.getInputStream());
            String inpu = input.nextLine();
            System.out.println(inpu);
            PrintWriter output = new PrintWriter(socket.getOutputStream(),true);
            output.println("Poruka primljena, zatvaram konekciju !");

            socket.close();

        }catch(Exception e){

        }
    }
}
class Glavna {

    public static void main(String[] args){
    System.out.println("Unesi s za servera ili nesto drugo za klijenta");
        Scanner in = new Scanner(System.in);
        String inh = in.nextLine();

        SC chater;

        if(inh.equals("s")){
            chater = new Server();
            chater.start();
        }else{
        System.out.println("Unesi IP adresu ");
        Scanner ip = new Scanner(System.in);
            String ipad = in.nextLine();
        
            chater = new Client();
            chater.start(ipad);
        }
    }
}



Kada dva puta startujem aplikaciju iz komandne linije i jedna mi bude server a druga klijent, i kada unesem sa klijentske strane ip adresu 127.0.0.1, sve radi kako treba. Ali kada se zakacim na net i pogledam onu pravu ip adresu, i ponovo pokusam taj program da startujem i sada unesem pravu ip adresu sa klijentske strane, a ne 127.0.0.1, desava mi se to da klijent ne moze da nadje servera, tj. mene.
Zasto je to tako, zasto u ovom slucaju nece da se ostvari konekcija?
Unapred hvala na odgovorima.
[ mulaz @ 09.03.2009. 06:56 ] @
http://java.sun.com/j2se/1.4.2...api/java/net/ServerSocket.html
ServerSocket(int port, int backlog, InetAddress bindAddr)
Create a server with the specified port, listen backlog, and local IP address to bind to.

znaci moras da bindAddr namestis na taj spoljni IP
[ krstak84 @ 09.03.2009. 19:30 ] @
Prepravio sam kod, i on izgleda ovako :

Code:


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

abstract class SC {
    public void start(){}
    public void start(String address){}
}

class Client extends SC{

    public void start(String ipad){
        try{
            Socket link = new Socket(ipad, 7904);
            System.out.println("Konekcija uspostavljena");
            Scanner input = new Scanner(link.getInputStream());
            PrintWriter output = new PrintWriter(link.getOutputStream(),true);

            Scanner us = new Scanner(System.in);
            String poruka, odgovor;

            System.out.print("Unesi poruku : ");
            poruka = us.nextLine();
            output.println(poruka);
            odgovor = input.nextLine();
            System.out.println("\nSERVER> "+odgovor);
        }catch(Exception e){

        }
    }
}
class Server extends SC{


    public void start(String adresa){
        try{
            ServerSocket soc = new ServerSocket(7904, 2, InetAddress.getByName(adresa));
            Socket socket = soc.accept();
            Scanner input = new Scanner(socket.getInputStream());
            String inpu = input.nextLine();
            System.out.println(inpu);
            PrintWriter output = new PrintWriter(socket.getOutputStream(),true);
            output.println("Poruka primljena, zatvaram konekciju !");

            socket.close();
            System.out.println("Konekciaj zatvorena !");

        }catch(Exception e){

        }
    }
}
class Glavna {

    public static void main(String[] args){
        
        InetAddress inet=null;
        String address="";
        try{

            inet = InetAddress.getLocalHost();
            address = InetAddress.getLocalHost().getHostAddress();
        }catch(Exception e){
            
        }
        System.out.println("Tvoja IP Adresa je " +inet.toString());

        System.out.println("Unesi s za servera ili nesto drugo za klijenta");
        Scanner in = new Scanner(System.in);
        String inh = in.nextLine();

        SC chater;

        if(inh.equals("s")){
            chater = new Server();
            chater.start(address);
        }else{
            System.out.println("Unesi IP adresu ");
            Scanner ip = new Scanner(System.in);
            String ipad = in.nextLine();

            chater = new Client();
            chater.start(ipad);
        }
    }
}



Kada pokrenem program na dva racunara koja su povezana na internet opet nece da radi, ne moze da uspostavi konekciju. Gde bi mogla da bude greska?
[ krstak84 @ 12.03.2009. 15:20 ] @
Zar je moguce da niko ne zna ....... ?
[ bgd2500 @ 17.03.2009. 00:48 ] @
Mozda te zeza Firewall?
[ neco_1986 @ 18.03.2009. 19:23 ] @
Ako sam dobro razumio, zelis da podignes chat server na jednom kompu i da na taj chat ides sa drugog kompa.

Primjer:

Komp na kome ces podignuti server neka ima IP: 192.168.1.1


Komp sa koga pokreces klijenta neka ima IP: 192.168.1.8
U programskom kodu CLIENT moras navesti fiksno IP adresu kompa na kome si podigao chat server i onda kompajlirati taj java fajl kako bi u class fajlu CLIENT imao kompajliranu adresu servera,
u ovom slucaju to je adresa 192.168.1.1



[ krstak84 @ 12.04.2009. 09:08 ] @
Probao sam i to ali nista.
Stvarno mi nije jasno kako to funkcionise.
[ nemnesic @ 12.04.2009. 16:41 ] @
ovo radi 10000%
provereno
uporedi ovo sa tvojim codom

http://www.ashishmyles.com/tutorials/tcpchat/index.html