0

Java TCP プログラムで複数のクライアントを受け入れたいと考えています。そこで、whileループを使用して複数のクライアントを受け入れました。しかし問題は、ノードをサーバーにランダムに接続できないことです。以前は、クライアントを 1 つずつ順番に接続していました。では、スイッチケースを使用してノードをサーバーにランダムに接続する方法は?

私のwhileループ:

int port=7000;

while(true)
{
    try
    {
        node1=new ServerSocket(port+10);
        Socket check1=node1.accept();
        System.out.println("CLIENT A IS CONNECTED");
    }
    catch(Exception e)
    {
        System.out.println(e);
    }

    try
    {
        ServerSocket soc2=new ServerSocket(port+20);
        Socket check2=soc2.accept();
        System.out.println("CLIENT B IS CONNECTED");
    }
    catch(Exception e)
    {
        System.out.println(e);
    }

    try
    {
        node3=new ServerSocket(port+30);
        Socket check3=node3.accept();
        System.out.println("CLIENT C IS CONNECTED");
    }
    catch(Exception e)
    {
        System.out.println(e);
    }

    try
    {
        node4=new ServerSocket(port+40);
        Socket check4=node4.accept();
        System.out.println("CLIENT D IS CONNECTED");
    }
    catch(Exception e)
    {
        System.out.println(e);
    }

    try
    {
        node5=new ServerSocket(port+50);
        Socket check5=node5.accept();
        System.out.println("CLIENT E IS CONNECTED");
    }
    catch(Exception e)
    {
        System.out.println(e);
    }

しかし、これを使用JavaNetBindexceptionすると、Eクライアントに接続すると発生します。

4

2 に答える 2

2
ServerSocket serverSocket = new ServerSocket(port);
ArrayList<Socket> clients = new ArrayList<Socket>();
while (true) {
    clients.Add(serverSocket.accept());        
}

これはどう?しかし、それでもいくつかのスレッドが必要になります。

于 2013-02-08T11:34:55.133 に答える
1
public class ThreadServer {

    static class ServerThread implements Runnable {
    Socket client = null;
    public ServerThread(Socket c) {
        this.client = c;
    }
    public void run() {
        try {
            System.out.println("Connected to client : "+client.getInetAddress().getHostName());
            client.close();
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }
    }
    }
    public static void main(String args[]) {
        try {
            ServerSocket server = new ServerSocket(7000);
            while (true) {
                Socket p = server.accept();
                new Thread(new ServerThread(p)).start();
            }
        } catch (Exception ex) {
            System.err.println("Error : " + ex.getMessage());
        }
    }
}
于 2013-02-08T11:45:18.230 に答える