当前位置:  技术问答>java相关

为什么我编的http服务器不能得到图片?

    来源: 互联网  发布时间:2015-02-02

    本文导语:  源文件如下: import java.net.*; import java.io.*; import java.util.*; class ServerOne extends Thread{ private Socket client; private BufferedReader in; private PrintWriter out; public ServerOne(Socket client) throws IOException{ this.client = client; i...

源文件如下:
import java.net.*;
import java.io.*;
import java.util.*;

class ServerOne extends Thread{
private Socket client;
private BufferedReader in;
private PrintWriter out;
public ServerOne(Socket client) throws IOException{
this.client = client;
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(client.getOutputStream())),true);
    start();
  }
  public void run(){
   try{
   while(true){
   String askLine = in.readLine();
   if(askLine.indexOf("GET") != -1){
   String fileName = getFileName(askLine);
   File file =new File(fileName);
   if(file.exists()){
   System.out.println("gett" + file);
   HttpServer.resultLog.println("gett" + file);
   out.println("http/1.1 200 ok");
   out.println("mime_version:1.0");
   out.println("content_type:text/htm1");
   out.println("content_length:" + file.length());
   out.println("nn");

   sendFile(out,file);

   }
   }
   System.out.println("askLinet" + askLine);
   HttpServer.resultLog.println("User ask t" +askLine);
   }
   }catch(IOException e){
   }finally{
   try{
   client.close();
   }catch(IOException e){
   }
   }
  }

  String getFileName(String askLine){
   askLine = askLine.substring(askLine.indexOf(' ') + 1);
   askLine = askLine.substring(0,askLine.indexOf(' '));
   System.out.println("asdf" + askLine);
   try{
   if(askLine.indexOf('/') == (askLine.length() - 1)){
   askLine = askLine.substring(1);
   askLine = askLine + "index.html";
   System.out.println("User ask t" + askLine);
   HttpServer.resultLog.println("User ask t" + askLine);
   }
   else{
   askLine = askLine.substring(1);
   System.out.println("User view t" + askLine);
   HttpServer.resultLog.println("User ask t" + askLine);
   }

   }catch(Exception e){}
   return askLine;
  }//end getFileName

  void sendFile(PrintWriter out,File file) throws IOException{
   BufferedReader readFile = new BufferedReader(new FileReader(file));
   String s1,s2 = new String();
   while((s1 = readFile.readLine()) != null){
   s2= s2 + s1 + "n";
   }
   out.write(s2);
   readFile.close();
   out.flush();
   out.close();
   System.out.println(file + "tOK");
  }

}//end ServerOne

public class HttpServer{
static PrintWriter resultLog;//log file
static final int PORT = 80;
public static void main(String[] args) throws IOException{
resultLog = new PrintWriter(new BufferedWriter(new FileWriter("httpLog.log")),true);
ServerSocket httpOne = new ServerSocket(PORT);
System.out.println("Server Started");
resultLog.println("Server Started");
try{
while(true){
Socket client = httpOne.accept();
System.out.println(client);
resultLog.println("n" + client);
try{
new ServerOne(client);
}catch(IOException e){
client.close();
e.printStackTrace();
resultLog.println(e + "nCloseed" + "n");
}
}
}finally{
httpOne.close();
System.out.println("Server Closed");
resultLog.println("Server Closed");
}
}
}///:~

|
...
  HttpServer.resultLog.println("gett" + file);
  out.println("http/1.1 200 ok");
  out.println("mime_version:1.0");
  // 需要注意一下mime :p
  // 下面这句话有点儿武断了^^
  out.println("content_type:text/htm1");

  out.println("content_length:" + file.length());
  out.println("nn");

  sendFile(out,file);
...

|
你写的程序和sun上面的sample挺像, hehehe ... 你对照下面的程序看一下吧 :)
http://developer.java.sun.com/developer/technicalArticles/Networking/Webserver/WebServercode.html

    
 
 

您可能感兴趣的文章:

  • wget http....如何让得到的文件自动覆盖?
  • 如何使用http下载文件,得到服务器的类型(IIS、apache)最好是多线程的,谢谢
  • 请问 如何得到 wget http://11.php --spider 的返回值
  • 用java程序得到http/1.1的相关信息,急!!!(100分)
  • Apache HTTP服务器2.4中的新功能概览
  • 防病毒的HTTP代理服务器 HTTP Anti Virus Proxy
  • 如何设置服务器, 使http://localhost/hello.php变成http://www.example.com/hello.php生效?
  • 请问Web服务器与HTTP服务器有什么区别?
  • SIP/HTTP Servlet应用程序服务器 Cipango
  • HTTP 代理服务器 Ziproxy
  • HTTP 服务器 Jigsaw
  • 小型 HTTP 服务器 MiniWeb
  • HTTP服务器 thttpd
  • Android的HTTP服务器 Personal Server
  • 红旗Linux浏览http://localhost为什么浏览不了了,说服务器关闭或没连接,怎么启动服务器呀??
  • http连接,服务器端关闭socket
  • HTTP 服务器 sthttpd
  • 小型HTTP服务器 httpico
  • http服务器
  • Linux 的 HTTP 服务器 Filed
  • Java HTTP 服务器 Reattore
  • 高性能的http服务器 luahttpd
  • http服务器 imgs
  • 基于epoll的HTTP服务器 clowwindy server
  • 小型HTTP服务器 gperftools-httpd
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux安装上webmin后不能通浏览器用http://IP地址:10000访问,而在本机上用http://localhost:10000却可以访问,为什么?
  • DNS问题 http://ooo.com 不能访问
  • http://sourceforge.net/不能访问了,why?
  • Tomcat4.03启动后,没有报错,但http://localhost:8080/不能正常工作,为什么?(在线关注)
  • 请问在redhat8.0装上qq时(通过http代理),怎么还是不能用啊?
  • 散分:为什么我的http代理程序就是不能上sina和网易邮箱的页面?
  • ~~~在线等待]]网络服务的问题,为什么别的机子不能访问我的HTTP,FTP等??
  • 请问用javac编译一般*.java能通过,但不能编译Servlet写的*.java.提示javax.servlet.http不存在。
  • 用windows客户机登陆Linux服务器不能建立建立文件夹????[img=http://forum.csdn.net/PointForum/ui/scrip
  • Applet不能在IE中显示,高分求助,另有80分在http://www.csdn.net/expert/topic/743/743378.xml?temp=.1879541
  • [apache+resin] http:\localhosttest.jsp 不能运行 ---肯定送分
  • http连接,服务器端关闭socket iis7站长之家
  • java命名空间javax.xml.ws.http接口httpbinding成员方法: http_binding定义参考
  • HTTP开发工具包 http-kit
  • java命名空间java.net枚举proxy.type的类成员方法: http定义及介绍
  • Java HTTP客户端 http4j
  • java命名空间javax.print.attribute.standard类referenceurischemessupported的类成员方法: http定义及介绍
  • Java HTTP 客户端开发包 jcabi-http
  • java命名空间java.net类httpurlconnection的类成员方法: http_accepted定义及介绍
  • linux c socket http编程 返回http消息体出错!
  • java命名空间java.net类httpurlconnection的类成员方法: http_unauthorized定义及介绍
  • 请问如何在c程序里调用一段http地址,比如http://test/reload.jsp
  • java命名空间java.net类httpurlconnection的类成员方法: http_created定义及介绍
  • 为什么输http://www.china-java.net,会自动改为http://www.china-java.net:8081?
  • java命名空间java.net类httpurlconnection的类成员方法: http_forbidden定义及介绍
  • http协议中文分词 http-scws
  • java命名空间java.net类httpurlconnection的类成员方法: http_gone定义及介绍
  • MM求助:怎样多线程下载http://java.sun.com上的东东? 用http方式,谢谢了.
  • java命名空间java.net类httpurlconnection的类成员方法: http_ok定义及介绍
  • 异步 HTTP 客户端开发包 android-async-http
  • java命名空间java.net类httpurlconnection的类成员方法: http_conflict定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3