-1

私の仕事を説明しましょう。

サーバーからクライアントにファイルを送信する必要があります。サーバーでは、クライアントからの接続を受け入れ、接続を閉じませんでした。ここで、データをストリームとしてクライアントに送信する必要があります。

これでコンテンツを選択し、メソッドでファイルに書き込みました。

入力ストリームでファイルをクライアントに送信する必要があるsendメソッドがあります。どのように送信します?

     public static void main(String args[]) 
{



    int port=5000;
    while(true)
    {
       try

    {
    ServerSocket ser=new ServerSocket(port+10);

    System.out.println("CLIENT A IS CONNECTED");

    ser.close();

    }
    catch(Exception e)
    {
        System.out.println(e);
    }
       try
    {
    ServerSocket ser1=new ServerSocket(port+20);

    ser1.accept();

    System.out.println("CLIENT B IS CONNECTED");
    }
    catch(Exception e)
    {
        System.out.println(e);
    }
       try
    {
    ServerSocket ser2=new ServerSocket(port+30);

    ser2.accept();

    System.out.println("CLIENT C IS CONNECTED");
    }
    catch(Exception e)
    {
        System.out.println(e);
    }
       try
    {
    ServerSocket ser3=new ServerSocket(port+40);

    ser3.accept();

    System.out.println("CLIENT D IS CONNECTED");
    }
    catch(Exception e)
    {
        System.out.println(e);
    }

    }
}

メイン メソッドでは、すべてのクライアント リクエストを受け入れました。

       private void jButton1ActionPerformed1(java.awt.event.ActionEvent evt) //sendbutton

    {
     try
     {
     FileReader buf=new FileReader("e:\\input.txt");

     int port= // the port of client which I selected to send the data
     try
     {

        @SuppressWarnings("resource")
        ServerSocket ser=new ServerSocket(port);
        Socket soc=ser.accept();
        BufferedReader toclient=new BufferedReader(buf);
        DataOutputStream dos=new DataOutputStream(soc.getOutputStream());
        System.out.println(dos.toString());

        dos.flush();
        dos.close();




    }
    catch(Exception e)
    {
    System.out.println(e);
    }
     }
     catch(Exception e)
     {
         System.out.println(e);
     }

    }

今私の質問は、私はすでにポートを開いており、メインメソッドで接続が確立されているということです。sendbutton メソッドでデータを受信するクライアントを選択して、サーバーからクライアントにデータを送信する必要があります。ソケット オブジェクト serv1 を send メソッドにチェックまたは渡す方法がわかりません。

4

1 に答える 1

0

以下はサンプル サーバー コードです (対応するインポート ステートメントとロジックを追加してください)。

class SampleServer
{
    private int port;
    private ArrayList clientList;   

    public SampleServer()
    {
        this.port = 4444;
    }

    public SampleServer(int port)
    {
        this.port = port;
    }

    public void startServer()
    {
        ServerSocket ss = new ServerSocket(this.port);
        Socket soc;
        while(true)
        {
            soc = ss.accept();
            clientList.add(soc);
        }
    }

    public ArrayList getClientList()
    {
        return clientList;
    }
}

以下は main メソッドのサンプルです (これを参考にして、独自のコードを作成してください)。

public class Main
{
    public static void main(String[] args) throws Exception
    {
        //Create a server
        //Server has to be only one and multiple clients can connect it
        SampleServer server = new SampleServer(5555);
        server.startServer();

        //Creating one client
        Socket soc = new Socket("localhost", 5555);

        //Similarly create n-number of clients and connect to the same port as that of server

        //server.getClientList(); will help you get the list of the clients connected to the server
    }
}
于 2013-02-04T10:58:13.563 に答える