Java сервер / клиент для двух компьютеров - PullRequest
0 голосов
/ 02 января 2019

Я создаю чат между несколькими компьютерами, но не могу найти , как подключить сокет к serverSocket , которого нет на компьютере клиента .

P.S. Я новичок в программировании сокетов.


Это сервер

package chat;

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

public class Server {

    public List<String> names = new ArrayList<String>();
    public HashMap<String, Socket> sockets = new HashMap<String, Socket>();
    public HashMap<String, BufferedReader> inputs = new HashMap<String, BufferedReader>();
    public HashMap<String, PrintWriter> outputs = new HashMap<String, PrintWriter>();

    public void start() throws IOException {
        int port = 2019;
        ServerSocket serverSocket = new ServerSocket(port);

        System.out.println("Server started");
        while(true) {
            System.out.println("\nLooking for new channels in the subspace.");
            Socket socket = serverSocket.accept();
            BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            PrintWriter output = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true);

            System.out.println("Someone connected.");

            new Thread() {
                public void run() {
                    //various input/output operations
                }
            }.start();
        }
    }

    public static void main(String[] args) throws IOException {
        Server server = new Server();
        server.start();
    }
}

это Клиент

package chat;

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

public class Client {

    public Socket socket;
    public BufferedReader input;
    public PrintWriter output;

    public void start() throws IOException {
        String host = "192.168.1.4 / 127.0.0.1 / computer's global ip";
        int port = 2019;
        socket = new Socket(host, port);
        input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        output = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true);

        System.out.println("Successfully established connection to " + host + ":" + port);

        new Thread() {
            public void run() {
                //output operations
            }
        }.start();

        new Thread() {
            public void run() {
                //input operations
            }
        }.start();
    }

    public static void main(String[] args) throws IOException {
        Client client = new Client();
        client.start();
    }
}

Теперь проблема в том, что это работает, когда сервер и клиент находятся на одном компьютере .
Я отправил на другой компьютер копию клиентского файла, но когда я вставляю IP-адрес компьютера сервера (192.168.1.4), ничего не происходит.
Оба компьютера подключены к одному и тому же WI-FI .

Другой вопрос: как подключить 2 компьютера без одного и того же WI-FI?

...