通过Socket实现简单web服务器功能(接收页面请求信息)不使用Tomcat!

本文介绍如何通过Socket编程实现一个简单的web服务器,监听特定端口接收HTTP请求,支持URL参数。运行示例展示了在本地浏览器访问服务器并获取响应的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过Socket来实现对http请求信息的获取。本人小白,有错误希望大家及时指出。

本项目的运行方式:运行Luancher,然后在浏览器通过网址访问:http:/localhost:7777.这里的端口号是和Luancher类中的参数一直,是一直监视的那个端口。url中也可以添加参数,以?连接的格式,代码运行过,可以直接使用。

package com.lei.second;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class HttpServer implements Runnable {
	//服务器监听
	private ServerSocket serverSocket;
	//标志位,标识当前服务器是否正在运行
	private boolean isRunning;
	public HttpServer(int port) {
		try {
			serverSocket = new ServerSocket(port);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public void stop() {
		this.isRunning = false;
	}
	
	public void start() {
		this.isRunning = true;
		new Thread(this).start();
	}
	
	@Override
	public void run() {
		while (isRunning) {	//一直监听,知道收到停止的命令
			Socket socket = null;
			try {
				socket = serverSocket.accept();	//如果没有请求,会在这里等待,有客户端请求的时候才会继续往下执行

				BufferedReader bufferedReader = new BufferedReader(
						new InputStreamReader(socket.getInputStream()));	//获取输入流
				StringBuilder stringBuilder = new StringBuilder();
				String line = null;
				while ((line = bufferedReader.readLine())!=null
						&&!line.equals("")) {
					stringBuilder.append(line).append("/n");
				}
				String record = stringBuilder.toString();
				System.out.println("--------------------------------");
				System.out.println(record);
				PrintWriter printWriter = new PrintWriter(
						socket.getOutputStream(),true);	//自动刷新缓存
				doEcho(printWriter, record); 	//将日志输出到浏览器
				printWriter.close();
				bufferedReader.close();
				socket.close();
			} catch (IOException e) {
				e.printStackTrace();
			}	
		}
	}
	
	/*
	 * 讲收到的信回写给客户端
	 */
	private void doEcho(PrintWriter printWriter, String record) {
		printWriter.write("已接受数据");
	}
}

package com.lei.second;

public class Luancher {
	public static void main(String[] args) {
		HttpServer httpServer = new HttpServer(7777);
		httpServer.start();
	}
}


运行后会在控制台写出协议内容,我们可以再根据自己所需要的部分,进行截取。


这里我让页面重写了协议内容,当然也可以返回其他数值,这里是模拟数据从服务端的响应。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值