Java - 使用eclipse运行多个客户端

时间:2011-11-02 11:54:10

标签: java eclipse client-server

我有用Java编写的服务器代码和客户端代码。但问题是如何在服务器运行时在Eclipse的DIFFERENT控制台窗口上运行多个客户端?感谢帮忙! (解决!​​!)

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 个答案:

答案 0 :(得分:1)

您可以从Eclipse运行任意数量的套接字客户端,前提是您将用户定义的ip / port信息作为命令参数从main()下的程序参数选项卡中的程序参数选项卡中传递给Eclipse中的该程序而不是使用一些硬连线值IP /端口。

要创建多个控制台视图(通过单独的Console View选项卡而不是单击每个实例),您需要在Eclipse Debug View模式下为每个目标实例创建一个新的控制台视图;要实现这一点,您需要选择“新控制台视图”(从带有加号的图标按钮到控制台视图的最右侧)并指定要从每个新控制台查看的程序实例。

  

另一个问题:如果我必须在ServerThread上更改某些内容,例如添加标题,是否可以在不重新启动服务器的情况下执行该操作?

哪个头衔?我没有看到ServerThread代码片段的任何GUI代码。您是指控制台视图选项卡的标题名称吗?