Java - запуск нескольких клиентов с затмением - PullRequest
1 голос
/ 02 ноября 2011

У меня есть коды сервера и клиентов, написанные на Java. Но вопрос в том, как запустить несколько клиентов в РАЗНЫХ консольных окнах с Eclipse, когда сервер работает? Спасибо за помощь! (Решена !!)

* * 1002 UPDATE ** Другой вопрос: я создам новый вопрос

Сервер:

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

public class ATMServer {

    private static int connectionPort = 8989;
    public static void main(String[] args) throws IOException {
    ServerSocket serverSocket = null;
    boolean listening = true; 
    try {
        serverSocket = new ServerSocket(connectionPort); 
    } catch (IOException e) {
        System.err.println("Could not listen on port: " + connectionPort);
        System.exit(1);
    }

    System.out.println("Bank started listening on port: " + connectionPort);
    while (listening)
        new ATMServerThread(serverSocket.accept()).start();
    serverSocket.close();
}

}

ServerThread:

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

public class ATMServerThread extends Thread {
private Socket socket = null;
private BufferedReader in;
PrintWriter out;
public ATMServerThread(Socket socket) {
    super("ATMServerThread");
    this.socket = socket;
}

public void run(){

}
}
}

Клиент: (** ОБНОВЛЕНИЕ)

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

public class ATMClient {
private static int connectionPort = 8989;

public static void main(String[] args) throws IOException {

    Socket ATMSocket = null;
    PrintWriter out = null;
    BufferedReader in = null;
    String adress = "";

    try {
        adress = "127.0.0.1";
    } catch (ArrayIndexOutOfBoundsException e) {
        System.err.println("Missing argument ip-adress");
        System.exit(1);
    }
    try {
        ATMSocket = new Socket(adress, connectionPort); 
        out = new PrintWriter(ATMSocket.getOutputStream(), true);
        in = new BufferedReader(new InputStreamReader
                                (ATMSocket.getInputStream()));
    } catch (UnknownHostException e) {
        System.err.println("Unknown host: " +adress);
        System.exit(1);
    } catch (IOException e) {
        System.err.println("Couldn't open connection to " + adress);
        System.exit(1);
    }




    out.close();
    in.close();
    ATMSocket.close();
}

1 Ответ

1 голос
/ 03 ноября 2011

Вы можете запустить столько клиентов сокетов из Eclipse, при условии, что вы определяете пользовательскую информацию ip / port в качестве аргументов команды из main () на вкладке «Аргументы программы» в диалоговом окне «Выполнить конфигурацию» для этой программы в Eclipse, а не используете некоторые аппаратные значения дляip / port.

Чтобы создать несколько представлений консоли (с помощью отдельных вкладок Console View вместо щелчка по каждому экземпляру), вам необходимо создать новое представление консоли для каждого целевого экземпляра в режиме Eclipse Debug View;Для этого вам нужно выбрать «Новое представление консоли» (из значка со значком плюса в правой части окна «Консоль») и назначить экземпляр программы для просмотра с каждой новой консоли.

Другой вопрос: если мне нужно что-то изменить на ServerThread, например, добавить заголовок, возможно ли выполнить это без перезапуска сервера?

Какой заголовок?Я не вижу кода GUI для фрагмента кода ServerThread.Вы имеете в виду название заголовка вкладки представления консоли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...