من کد سوکت به زبان جاوا نوشتم که بصورتی که اگر کامپیوتر و گوشی ای که هر دو به یک شبکه متصل هستند درست کار میکنه و کلاینت و سرور (کامپیوتر و گوشی) به هم متصل میشن ولی نمیتونن از طریق ریموت (اگر به یک شبکه متصل نباشند) به هم متصل بشن.

لطفا راهنمایی کنید که :

  1. چجوری میتونم سرور را روی هر کامپیوتری خارج از شبکه اجرا کنم و کلاینت بتونه ارتباط برقرار کنه ؟
  2. چجوری آی پی کامپیوترم را در اینترنت عمومی کنم تا بتوانم از طریق سایر دستگاه ها به کامپیوترم متصل شوم ؟
  3. آیا مشکل از کدهای جاوای من است ؟

کدهای سرور :


package Socket;

import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    ServerSocket mServer;
    int serverPort = 9090;
        String host = "192.168.43.51";//127.0.0.1
        InetAddress inetAddress ;

    InputStream fromClientStream;
    OutputStream toClientStream;

    DataInputStream reader;
    PrintWriter writer;

    public Server() {

        try {
            // create server socket!
            mServer = new ServerSocket(serverPort);
                        ///inetAddress = InetAddress.getByName(host);
                        //mServer = new ServerSocket(serverPort, serverPort, inetAddress);

            System.out.println("Server Created!");

            // wait for client
            // hold an object of Socket for each client
            Socket client = mServer.accept();

            // horaaaaa
            System.out.println("Connected to New Client!");

            // input stream (stream from client)
            fromClientStream = client.getInputStream();

            // output sream (stream to client)
            toClientStream = client.getOutputStream();

            reader = new DataInputStream(fromClientStream);
            writer = new PrintWriter(toClientStream, true);

            // send message to client
            writer.println("Salam Client joon");
            System.out.println("Server :Salam Client joon");

            // Receive client response (javab:D)
            String javab = reader.readLine();
            System.out.println("Client :" + javab);

            // send message to client (again)
            writer.println("khobi??");
            System.out.println("Server :khobi?");

            // Receive client response (javab:D)
            javab = reader.readLine();
            System.out.println("Client :" + javab);

        } catch (IOException e) {

        }

    }

    public static void main(String[] args) {
        new Server();
    }
}

کدهای کلاینت :


package Socket;

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

public class Client {
    Socket mSocket;
    int port = 9090;
    String serverAddress = "192.168.43.51";//127.0.0.1

    InputStream fromServerStream;
    OutputStream toServerStream;

    DataInputStream reader;
    PrintWriter writer;

    public Client() {
        try {

            mSocket = new Socket(serverAddress, port);

            System.out.println("connect to server ....");

            // input stream (stream from server)
            fromServerStream = mSocket.getInputStream();

            // output stream (stream to server)
            toServerStream = mSocket.getOutputStream();

            reader = new DataInputStream(fromServerStream);
            writer = new PrintWriter(toServerStream, true);

            // first : read server message
            String msg = reader.readLine();
            System.out.println("Server :" + msg);

            // send message to server
            writer.println("Salam Servere man");
            System.out.println("Client :Salam Servere man");

            // read server message
            msg = reader.readLine();
            System.out.println("Server :" + msg);

            // send message to server
            writer.println("Ohum!!!");
            System.out.println("Client :Ohum!!!");

        } catch (UnknownHostException e) {
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }

    public static void main(String[] args) {
        new Client();
    }
}