我现在写一个程序:用Java语言完成一个基于HTTP协议的文件传输站,类似于FTP服务器。由于我本人刚开始学Java,所以有很多东西不会。现在我在写Socket程序时,在主页中添加了两个链接,但是我点击链接的时候没有作用。我现在我想问一下:我应该怎样实现点击链接的响应呢?

解决方案 »

  1.   

     Socket 编程没玩过,但编码问题的话你可以把编码设置为utf-8或者gbk(中文)
      

  2.   

    貌似html5才支持socket吧,你点击链接应该用点击事件
      

  3.   

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    public class HttpEngine {

    private ServerSocket serverSocket;

    public void start() throws IOException {
    serverSocket = new ServerSocket(8080, 3);

    while(true) {
    Socket socket = serverSocket.accept();
    parseRequest(socket);
    parseResponse(socket);
    socket.close();
    }

    }

    public void parseRequest(Socket socket) throws IOException {
    InputStream is = socket.getInputStream();
    byte[] b = new byte[is.available()];
    is.read(b);
    //is.close();
    }

    public void parseResponse(Socket socket) throws IOException {
    OutputStream os = socket.getOutputStream();

    File file = new File("D:\\teste.jpg");
    StringBuilder httpHead = new StringBuilder();

    httpHead.append("HTTP/1.1 200 OK\r\n")
    .append("Server: Microsoft-IIS/5.0\r\n")
    .append("ContentType: application/x-download\r\n")
    .append("Content-Disposition: attachment;filename=" + file.getName()+ "\r\n\r\n");

    os.write(httpHead.toString().getBytes());

    FileInputStream is = new FileInputStream(file);

    byte[] b = new byte[1024];

    while(is.read(b) != -1) {
    os.write(b);
    }

    os.flush();

    os.close();
    }

    public static void main(String args[]) throws Exception {
    new HttpEngine().start();
    }
    }
    在浏览器里面打http://localhost:8080,图片文件就下载下来了但是太复杂的文件:如pdf,download下来后有错误。因为我只用了非完整的http协议。lz自己完善下然后你在网页里面用<a href="http://localhost:8080">下载</a>,应该也是可以的