栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

用java 编写的,让每一台主机成为http服务器,用浏览器作为客户端浏览此主机的全部目录和文件

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用java 编写的,让每一台主机成为http服务器,用浏览器作为客户端浏览此主机的全部目录和文件

用法: 在本机或者其他主机,甚至手机浏览器中输入主机的URL地址即可。此代码还没有容错功能,后序完善,但现在已可以用。

本文的重点是怎样读取http客户端即浏览器发送的首部,怎样创建http服务器端即你的PC主机,发送的首部和数据区,理解http的socket编程。照这个思路就可以轻松编写网络b/w ,c/w程序了,只要重新编写客户端,服务器端首部中host的地址就可完成如翻墙程序,端口映射,转换,网段通联,网络透传,甚至自己的路由器,wifi ap。。。。一切的一切,老王咋一下就开窍了,哈哈哈哈。。。。

效果图片:

全部代码

 

 

import java.net.*;
import java.io.*;
import java.util.Scanner;

public class Inetaddress {
	public static void main(String[] args) {
		
	try {
		ServerSocket ss=new ServerSocket(8000);
		while(true) {
		Socket sc=ss.accept();
// 读客户端发来请求的首部数据,找到	Host: localhost:8000	在第(2)行   http首部与数据区分割符为rnrn
		System.out.println("socket linking");
		InputStream is=sc.getInputStream();
		Scanner sn=new Scanner(is);
		 String st="";
		 String zz="";
		
		for(st=sn.nextLine();st!="";st=sn.nextLine()) {
	            if(st.indexOf("GET")>=0) {
	            	   if(st.indexOf("HTTP/1.1")>0) {
	            	
	            		    zz=st.substring(4,(st.indexOf("HTTP/1.1")-1));
	            		    zz=zz.trim();
		               }
	             }       
		}
		OutputStream os=sc.getOutputStream();
	//	String s="HTTP/1.1 200 oknnHello worldn";
		os.write(("HTTP/1.1  200rnrn").getBytes());
		os.flush();
	
	//读一个目录
	if(zz.indexOf("favicon.ico")<0) {          //pc的chrome 和 华为浏览器 要发送favicon.ice  
	    if((zz.indexOf("."))<0) {              //文件名都带'.' 
	    	
	  //   	System.out.println(zz);
	    	File fl=new File(zz);
	    	String[] a=fl.list();
	   	         if(a!=null) {
			           for(String h:a) {
	
				            os.write(h.getBytes());
				            os.write('n');
			             	os.flush();
			            }
	   	        }
	    	os.close();
	    } else {
         //读一个文件
	
	            if(zz!="") {
                       FileInputStream fs=new FileInputStream(zz);
 		               int k;
		               for(k=fs.read();k!=-1;k=fs.read()) {
			                  os.write(k);
		
		                      os.flush();
		               }            
		               os.close();
		       } 
	     }	
    }
    }
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}	
}
}			

 

 

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1040327.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号