TCP读取文件并在java中发送给客户端

时间:2013-02-03 14:22:49

标签: java sockets methods tcp

让我解释一下我的工作。

我必须从服务器向客户端发送文件。在服务器中,我接受了来自客户端的连接而没有关闭连接。现在我必须将数据作为流发送给客户端。

现在我选择了一个内容并在方法文件中写入。

我有发送方法,我必须将输入流中的文件发送到客户端。怎么发送?

     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);
    }

    }
}

在main方法中,我接受了所有客户端请求。

       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);
     }

    }

现在我的问题是我已经打开了端口,并且在main方法中建立了连接。我必须通过选择sendbutton方法接收数据的客户端将数据从服务器发送到客户端。我很困惑如何检查或将套接字对象serv1传递给send方法?

1 个答案:

答案 0 :(得分:0)

下面是示例服务器代码(请添加相应的import语句和您的逻辑)

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
    }
}