使用socket,实现从客户端传一文件到服务器端,并在服务器端控制台打印出来,文件为:D:/data.txt 内容为:hello!
服务器和客户端都在本地
——————————————
程序怎么写 请指导下?

解决方案 »

  1.   

    先用文件流将文件内容存储在String中,将String转化为byte,通过socket将byte发至服务器并打印
      

  2.   

    就用Socket,然后做一个BufferedReader跟一个PrintWriter连起来然后就可以随便发送了
      

  3.   

    就用Socket,然后做一个BufferedReader跟一个PrintWriter连起来然后就可以随便发送了
      

  4.   

    import java.net.*;
    import java.io.*;
    public class Server
    {
    private ServerSocket server;
    private Socket you;
    private receive rec;
    public Server()
    {
    try
    {
    server = new ServerSocket(2007);
      System.out.println("服务器运行中,监听端口:2007......");
    while(true)
    {
    you = server.accept();
    if(you != null)
    {
    System.out.println("有客户连接启动接收线程...");
    new Thread(new receive(you)).start();
    System.out.println("接收文件内容如下: --->服务器继续监听中...");
    }
    }
    }catch(Exception e){System.out.println("服务端运行出错!");}
    }

    public static void main(String args[])
    {
    new Server();
    }
    }class receive implements Runnable
    {
    private File files;
    private DataInputStream din = null;
    private DataOutputStream dout = null;
    private Socket mySock = null;
    private int str = 1;
    public receive(Socket you)
    {
    this.mySock = you;
    //files = new File("d:\\data.txt");
    }

    public void run()
    {
    try
    {
    din = new DataInputStream(mySock.getInputStream());
    dout = new DataOutputStream(mySock.getOutputStream()); while(true)
    {
    if((str=din.readInt()) == 0)
    break;
    System.out.println("" + din.readUTF());
    }
    clears();
    }catch(Exception e){System.out.println("接收出错!");}
    finally
    {
    clears();
    }

    }

    void clears()
    {
    try
    {
    dout.close();
    din.close();
    mySock.close();
    }catch(Exception e){System.out.println("关闭出错");}
      }}
      

  5.   

    import java.net.*;
    import java.io.*;
    public class Client
    {
    private Socket you;
    SendData sends;

    public Client()
    {
    try
    {   
               you = new Socket("localhost",2007);
     System.out.println("连接服务器监听端口:2007......");
     if(you != null)
     {
        System.out.println("连接成功,启动发送线程...");
        new Thread(new SendData(you)).start();
        System.out.println("发送完毕!关闭线程...");
      }
    }catch(Exception e){System.out.println("服务端运行出错!");}
    }

    public static void main(String args[])
    {
    new Client();
    }
    }class SendData implements Runnable
    {
    private File files;
    private BufferedReader bin = null;
    private DataInputStream din = null;
    private DataOutputStream dout = null;
    private Socket mySock = null;
    private String data = "";
    public SendData(Socket you)
    {
    this.mySock = you;
    files = new File("d:\\data.txt");
    }

    public void run()
    {
    try
    {
    bin = new BufferedReader(new InputStreamReader(new FileInputStream(files)));
    din = new DataInputStream(mySock.getInputStream());
    dout = new DataOutputStream(mySock.getOutputStream());
    while((data = bin.readLine()) != null)
    {
    dout.writeInt(1);
    dout.writeUTF(data);
    }
    dout.writeInt(0);
    clears();
    }catch(Exception e){}
    finally
    {
    clears();
    }

    }

    void clears()
    {
    try
    {
    bin.close();
    dout.close();
    din.close();
    mySock.close();
    }catch(Exception e){System.out.println("关闭出错");}
      }}