- 浏览: 48938 次
- 性别:
- 来自: 酆都
文章分类
最新评论
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
public class Processor extends Thread{
private Socket socket;
private InputStream in;
private PrintStream out;
public final static String WEB_ROOT="c:\\workspace\\webserver\\htdocs";
public Processor(Socket socket){
this.socket=socket;
try {
in=socket.getInputStream();
out=new PrintStream(socket.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
public void run(){
String filename=parse(in);
sendFile(filename);
}
public String parse(InputStream in){
BufferedReader br=new BufferedReader(new InputStreamReader(in));
String filename=null;
try {
String httpMessage=br.readLine();
String[] content=httpMessage.split(" ");
if(content.length!=3){
sendErrorMessage(400,"Client query error!");
return null;
}
System.out.println("code:"+content[0]+",fileName"+content[1]+",http version:"+content[2]);
filename=content[1];
} catch (IOException e) {
e.printStackTrace();
}
return filename;
}
public void sendErrorMessage(int errorCode,String errorMessage){
out.println("HTTP/1.0"+errorCode+" "+errorMessage);
out.println("content-type: text/html");
out.println();
out.println("");
out.println("Error Message");
out.println("");
out.println("");
out.println("ErrorCode:"+errorCode+",Message:"+errorMessage+"");
out.println("");
out.println("");
out.flush();
out.close();
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void sendFile(String filename){
File file=new File(Processor.WEB_ROOT+filename);
if(!file.exists()){
sendErrorMessage(404,"File Not Found!");
return;
}
try {
InputStream in=new FileInputStream(file);
byte content[]=new byte[(int)file.length()];
in.read(content);
out.println("HTTP/1.0 200 queryfile");
out.println("conrtent=length:"+content.length);
out.println();
out.write(content);
out.flush();
out.close();
in.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2.WebServer.java
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public void serverStart(int port) {
try {
ServerSocket serverSocket = new ServerSocket(port);
while (true) {
Socket socket = serverSocket.accept();
new Processor(socket).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
int port = 80;
if (args.length == 1) {
port = Integer.parseInt(args[0]);
}
new WebServer().serverStart(port);
}
}
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
public class Processor extends Thread{
private Socket socket;
private InputStream in;
private PrintStream out;
public final static String WEB_ROOT="c:\\workspace\\webserver\\htdocs";
public Processor(Socket socket){
this.socket=socket;
try {
in=socket.getInputStream();
out=new PrintStream(socket.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
public void run(){
String filename=parse(in);
sendFile(filename);
}
public String parse(InputStream in){
BufferedReader br=new BufferedReader(new InputStreamReader(in));
String filename=null;
try {
String httpMessage=br.readLine();
String[] content=httpMessage.split(" ");
if(content.length!=3){
sendErrorMessage(400,"Client query error!");
return null;
}
System.out.println("code:"+content[0]+",fileName"+content[1]+",http version:"+content[2]);
filename=content[1];
} catch (IOException e) {
e.printStackTrace();
}
return filename;
}
public void sendErrorMessage(int errorCode,String errorMessage){
out.println("HTTP/1.0"+errorCode+" "+errorMessage);
out.println("content-type: text/html");
out.println();
out.println("");
out.println("Error Message");
out.println("");
out.println("");
out.println("ErrorCode:"+errorCode+",Message:"+errorMessage+"");
out.println("");
out.println("");
out.flush();
out.close();
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void sendFile(String filename){
File file=new File(Processor.WEB_ROOT+filename);
if(!file.exists()){
sendErrorMessage(404,"File Not Found!");
return;
}
try {
InputStream in=new FileInputStream(file);
byte content[]=new byte[(int)file.length()];
in.read(content);
out.println("HTTP/1.0 200 queryfile");
out.println("conrtent=length:"+content.length);
out.println();
out.write(content);
out.flush();
out.close();
in.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2.WebServer.java
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public void serverStart(int port) {
try {
ServerSocket serverSocket = new ServerSocket(port);
while (true) {
Socket socket = serverSocket.accept();
new Processor(socket).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
int port = 80;
if (args.length == 1) {
port = Integer.parseInt(args[0]);
}
new WebServer().serverStart(port);
}
}
发表评论
-
设计模式(24)- 访问者模式
2018-01-26 20:56 464访问者模式 1.定义 表示一个作用于某对象 ... -
设计模式(23)- 桥接模式
2018-01-25 08:39 328桥接模式 1.定义 将抽象部分与它的实现部 ... -
设计模式(22)- 职责者模式
2018-01-23 09:07 413职责者模式 1.定义 使多个对象都有机会处理 ... -
设计模式(21)- 装饰者模式
2018-01-21 20:47 298装饰者模式 1.定义 动态的给一个对象添加一 ... -
设计模式(20)- 解释器模式
2018-01-21 19:46 306解释器模式 1.定义 给定一个语言,定义它的文 ... -
设计模式(19)- 享元模式
2018-01-21 18:42 301享元模式 1.定义 运用共享技术,有效的支 ... -
设计模式(18)- 备忘录模式
2018-01-20 18:28 348备忘录模式 1.定义 在不破坏封装性的前提 ... -
设计模式(17)- 状态模式
2018-01-20 17:11 425状态模式 1.定义 允许一个对象在其内 ... -
设计模式(16)- 策略模式
2018-01-20 16:13 335策略模式 1.定义 定义一系列的算法,把它 ... -
设计模式(15)- 模板方法模式
2018-01-20 15:42 443模板方法模式 1.定义 定义一个操作中的 ... -
设计模式(14)- 组合模式
2018-01-14 14:03 303组合模式 1.定义 将对象组合成树形结构,以 ... -
设计模式(13)- 迭代器模式
2018-01-14 12:04 350迭代器模式 1.定义 提供一种方法,顺序 ... -
设计模式(12)- 命令模式
2018-01-13 14:48 392命令模式 1.定义 ... -
设计模式(11)- 观察者模式
2018-01-13 14:08 462观察者模式 1.定义 定义对象间的一种一对 ... -
设计模式(10)- 代理模式
2018-01-13 13:32 374代理模式 1.定义 为其他对象提供一种 ... -
设计模式(9)- 中介者模式
2018-01-13 12:57 269中介者模式 1.定义 用一个中介对象来封装 ... -
设计模式(8)- 原型模式
2018-01-13 12:02 408原型模式 1.定义 用原型模式指定创建对象 ... -
设计模式(7)- 生成器模式
2018-01-07 21:51 420生成器模式 1.定义 将复杂对象的构件和 ... -
设计模式(6)- 抽象工厂模式
2018-01-07 20:19 418抽象工厂模式 1.定义 提供一个创建一系 ... -
设计模式(5)- 工厂方法模式
2018-01-07 14:14 403工厂方法模式 1.定义 定义个 ...
相关推荐
本项目是使用java Socket编程实现的一个简单的FTP服务器和客户端。 客户端目前实现的功能是登录,刷新,上传和下载。同时具有主动模式和被动模式两种模式。 服务器端实现的功能有登录、刷新、上传、下载、列出文件...
在这个场景中,我们讨论的是如何使用Java的Socket来实现文件上传功能,即从客户端将文件发送到服务器,然后保存到服务器的数据库中。这个过程涉及到多个关键知识点,下面我们将详细探讨。 1. **Java Socket基础**:...
Java Socket技术是网络编程中的重要组成部分,主要用于实现两个应用程序之间的通信。在这个场景中,我们讨论的是如何使用Java Socket来实现实时的屏幕监控功能,即服务端能够远程查看客户端的屏幕内容,这样的功能在...
Java Socket 实现 SMTP 发送邮件是一项常见的编程任务,尤其在自动化通知、系统间通信或用户交互中非常有用。SMTP(Simple Mail Transfer Protocol)是互联网上用于传输电子邮件的标准协议,而Java Socket则是Java...
Java Socket实现简单的Web服务器是一个基础但实用的编程实践,它涉及到网络编程、HTTP协议和文件I/O等核心概念。在本项目中,我们利用Java的Socket API构建了一个基本的服务器,该服务器仅处理HTTP GET请求并返回...
而Java Socket库则提供了实现SMTP客户端所需的基本功能,允许我们创建连接到SMTP服务器的套接字,并通过这个连接发送邮件。以下是一些关键知识点: 1. **Java Socket类**:Java的`java.net.Socket`类是网络通信的...
Java Socket 编程实现的简单多线程 WEB 服务器 在本文中,我们将详细介绍如何使用 Java 的 Socket 编程实现一个简单的多线程 WEB 服务器。 Socket 编程简介 Socket 编程是 Java 网络编程的基础,它允许开发者创建...
Java Socket 连接池实现是提高网络应用性能和效率的关键技术之一。在高并发的网络环境中,频繁地创建和销毁Socket连接会导致大量的系统资源浪费,影响整体性能。为了解决这个问题,开发人员通常会使用连接池来管理和...
该项目是Socket.IO服务器的开源 Java 实现。基于Netty服务器框架。 根据 Apache License 2.0 获得许可。 支持1.x - 4.x版本的Socket.IO 客户端 支持 xhr 轮询传输 支持websocket传输 支持命名空间和房间 支持ack...
Java Socket 是 Java 语言中用于实现网络编程的 API,通过 Socket,可以实现与远程服务器的通信。在这里,我们将使用 Java Socket 实现 SMTP 协议来发送邮件。 SMTP 协议简介 SMTP(Simple Mail Transfer Protocol...
Java的Socket实现的多人聊天程序是一个基于网络通信的项目,主要利用了Java的Socket类来构建客户端和服务端的通信桥梁。Socket是TCP/IP协议的一部分,它提供了两台计算机之间进行数据传输的基础。在这个项目中,...
Java Socket编程是网络编程中的重要组成部分,主要用于在两台计算机之间建立双向通信通道,实现数据的交换。在Java中,Socket类和ServerSocket类是进行网络通信的核心工具,它们提供了客户端与服务器之间的连接和...
Java Socket服务器客户端程序是网络编程中的基础组件,用于实现两台计算机之间的通信。Socket编程是Java提供的一个标准接口,它允许应用程序通过网络发送和接收数据。在这个程序中,我们将探讨以下几个核心知识点: ...
在Java编程语言中,使用Socket实现一个简单的HTTP服务器是一项基础但重要的技能。HTTP服务器是互联网上用于接收HTTP请求并返回响应的程序。本教程将详细解释如何通过Socket类来构建这样的服务器,同时会涉及到相关的...
综上所述,Java实现Socket长连接和短连接涉及网络通信基础、连接管理、异常处理等多个方面,开发者需要根据实际需求权衡选择合适的方式。通过深入理解这些概念和技术,可以有效地优化网络服务,提升应用的性能和用户...
Java Socket 实现双机通信,通常是指通过网络编程技术在两台或多台计算机之间建立通信链路,使得数据能够双向传输。在这个场景中,我们提到的是一个具备图形用户界面(GUI)的多人聊天室应用。Java Socket 提供了低...
在Java中,Socket是实现网络通信的基础,通过Socket可以实现客户端和服务器端之间的通信。本文将详细介绍Java基于Socket实现的客户端和服务端通信功能,包括客户端和服务器端的实现、连接和通信的过程。 Socket的...
在Java中,Socket提供了低级别的、基于连接的、面向数据流的通信API,可以用于实现客户端-服务器架构的应用程序。以下是关于Java Socket通信实现的详细知识点: 1. **Socket基础**: - **Socket类**:Java中的`...
Java Socket 是一种网络通信协议,它是Java编程语言中实现客户端-服务器模型的基础。Socket 提供了低级别的、面向连接的、双向通信的网络接口,允许应用程序通过网络进行数据传输。在本示例中,我们将深入探讨Java ...
Java Socket 编程实现两台主机间的通信 Java Socket 编程是 Java 语言中用于实现网络通信的编程技术。通过使用 Socket 编程,可以实现两台主机之间的通信,实现数据的传输和交换。本文将详细介绍 Java Socket 编程...