另外eclipse还没有5.5,5.5的貌似是myEclipse吧
其中port指端口,默认是地址是http://127.0.0.1:8088/
其中basePath指资源根路径,默认是d:
可以通过命令行参数对其进行赋值
import java.io.BufferedReader
import java.io.ByteArrayOutputStream
import java.io.File
import java.io.FileInputStream
import java.io.IOException
import java.io.InputStreamReader
import java.io.OutputStream
import java.io.PrintStream
import java.net.ServerSocket
import java.net.Socket
import java.net.URLDecoder
public class SimpleHttpServer {
private static int port = 8088
private static String basePath = "D:/"
public static void main(String[] args) {
if (args.length >= 1) {
basePath = args[0]
}
if (args.length >= 2) {
port = Integer.parseInt(args[1])
}
System.out.println("server starting:")
System.out.println("base path:" + basePath)
System.out.println("Listening at:" + port)
startServer()
System.out.println("server started succesfully")
}
private static void startServer() {
new Thread() {
public void run() {
try {
ServerSocket ss = new ServerSocket(port)
while (true) {
final Socket s = ss.accept()
new Thread() {
public void run() {
try {
OutputStream socketOs = s.getOutputStream()
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()))
String line
String headerLine = null
while ((line = br.readLine()) != null) {
if (headerLine == null) {
headerLine = line
}
if ("".equals(line)) {
break
}
}
String target = headerLine.replaceAll("^.+ (.+) HTTP/.+$", "$1")
String queryString
String[] tmp = target.split("\\?")
target = URLDecoder.decode(tmp[0], "utf-8")
target = target.endsWith("/") ? target.substring(0, target.length() - 1) : target
if (tmp.length >1) {
queryString = tmp[1]
} else {
queryString = ""
}
String filePath = basePath + target
File f = new File(filePath)
if (!f.exists()) {
StringBuffer content = new StringBuffer()
content.append("<html><head><title>Resource Not Found</title></head><body><h1>The requested resource ")
.append(target).append(" is not found.</h1></body></html>")
StringBuffer toWrite = new StringBuffer()
toWrite.append("HTTP/1.1 404 Not Found\r\nContent-Length:").append("" + content.length()).append("\r\n\r\n")
.append(content)
socketOs.write(toWrite.toString().getBytes())
} else if (f.isDirectory()) {
StringBuffer content = new StringBuffer()
content.append("<html><head><title>").append(target).append(
"</title></head><body><table border='1' width='100%'>")
content.append("<tr><th align='left' width='40px'>").append("Path").append("</th><td>").append(target.length()>0?target:"/")
.append("</td></tr>")
content.append("<tr><th align='left'>Type</th><th align='left'>Name</th></tr>")
if (!basePath.equals(filePath)) {
content.append("<tr><td>Directory</td><td>").append("<a href='").append(
target.substring(0, target.lastIndexOf("/") + 1)).append("'>..</a>").append("</td></tr>")
}
File[] files = f.listFiles()
for (File file : files) {
content.append("<tr><td>")
if (file.isFile()) {
content.append("File</td><td>")
} else if (file.isDirectory()) {
content.append("Directory</td><td>")
}
content.append("<a href=\"").append(target)
if (!(target.endsWith("/") || target.endsWith("\\"))) {
content.append("/")
}
content.append(file.getName()).append("\">").append(file.getName()).append("</a></td></tr>")
}
content.append("</table></body></html>")
StringBuffer sb = new StringBuffer()
sb.append("HTTP/1.1 200 OK\r\nCache-Control: max-age-0\r\n")
sb.append("Content-Length:").append("" + content.length()).append("\r\n\r\n")
sb.append(content)
socketOs.write(sb.toString().getBytes())
} else if (f.isFile()) {
socketOs.write(("HTTP/1.1 200 OK\r\nCache-Control: max-age-0\r\nContent-Length:" + f.length() + "\r\n\r\n")
.getBytes())
byte[] buffer = new byte[1024]
FileInputStream fis = new FileInputStream(f)
int cnt = 0
while ((cnt = fis.read(buffer)) >= 0) {
socketOs.write(buffer, 0, cnt)
}
fis.close()
}
socketOs.close()
} catch (Exception e) {
try {
s.getOutputStream().write("HTTP/1.1 500 Error\r\n".getBytes())
ByteArrayOutputStream byteos = new ByteArrayOutputStream()
PrintStream printStream = new PrintStream(byteos)
printStream
.write("<html><head><title>Error 500</title></head><body><h1>Error 500</h1><pre style='font-size:15'>"
.getBytes())
e.printStackTrace(printStream)
printStream.write("</pre><body></html>".getBytes())
byteos.close()
byte[] byteArray = byteos.toByteArray()
s.getOutputStream().write(("Content-Length:" + byteArray.length + "\r\n\r\n").getBytes())
s.getOutputStream().write(byteArray)
s.close()
} catch (IOException e1) {
e1.printStackTrace()
}
}
}
}.start()
}
} catch (Exception e) {
e.printStackTrace()
}
}
}.start()
}
}
.需求分析2.主要技术介绍
3.实验内容及步骤
4.网络测试
5.课程设计小结
建议还是自己写比较好 你应该是从事这个行业的,可以得到历练
1.设计任务本部分为办公区、教学区和生活区三部分。现假设:办公区中各楼宇名为:教务处楼,党政办公楼,图书馆,计算机楼、讲堂楼、机械楼、土木楼、海洋学院楼、艺术学院楼、教学主楼、文通楼等,生活区中有学生公寓区和教师住宅区及各食堂。假设使用预留的INTERNET地址,试根据本部校园网的应用需求和管理需求、各建筑物的地理分布、确定信息点个数及信息点分布,设计出本部的校园网方案。方案中应明确学院网管中心的位置,确定拓扑方案,进行IP地址规划,完成设备选型,注明各种设备、设施和软件的生产商、名称、型号、配置与价格,并分别给出其价格的出处(如网站等),基本确定方案的预算。
2.设计要求
(1)通过资料查阅和学习,了解园区网络规划、设计的一般方法。
(2)参考和研究一些公司和高校/企业园区网的规划和建设方案,结合《计算机网络》课程中所学知识,积极完成设计任务。
(3)认真完成需求分析,并根据需求分析完成园区网络的总体方案设计,确定网络逻辑拓扑结构和所采用的网络技术、主要设备的性能指标,进而完成设备的选型和经费预算。
(4)动手架构一个具体的LAN,要求实现WEB服务器、FTP服务器的安装,并能实现WEB信息发布。
(5)创建局域网内的DNS服务器,配置相关文件,可以对局域网内的主机作域名解析。
(6)认真按时完成课程设计报告,课程设计报告内容包括:课程设计目的、设计任务与要求、设计说明书、设计成果和设计心得五个部分。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)