最简单的编程服务器

简介: 最简单的编程服务器

一、tomcat出发点代码
package com.example.demo.test;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

public static void main(String[] args) throws IOException {
    new Server().start();
}

public void start() throws IOException {
    ServerSocket serverSocket = new ServerSocket(8888);
    Socket socket = null;
    System.out.println("启动web服务");
    while (true) {
        socket = serverSocket.accept();
        Thread thread = new Thread(new HttpServerThread(socket));
        thread.start();
    }
}

 内部类
private class HttpServerThread implements Runnable {
    Socket socket = null;

    HttpServerThread(Socket socket) {
        this.socket = socket;
    }

    @Override
    public void run() {
        InputStream is = null;
        OutputStream os = null;
        BufferedReader br = null;
        try {
            is = this.socket.getInputStream();
            os = this.socket.getOutputStream();
            
            // 页面的请求
            br = new BufferedReader(new InputStreamReader(is));
            String line = br.readLine();
            int i = 0;
            while (null != line && br.ready()) {
                line = br.readLine();
                System.out.println("第" + i + "行信息:" + line);
                i++;
            }

            // 页面的响应
            String reply = "HTTP/1.1\n";             // 必须添加的响应头
            reply += "Content-type:text/html; charset=UTF-8\n\n";        // 必须添加的响应头
            reply += "服务器返回的消息";
            os.write(reply.getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                os.close();
                is.close();
                socket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

}
二、出发点扩散,一些扩展应用
既然tomcat是通过socket进行通信的,浏览器或请求模拟器是写数据到socket的。那一切就简单了。
针对写入的这些请求头参数,进行不同的业务处理,类似业务选择器,包含某个请求头就处理,不包含就不处理
(1)keep-alive 保持长长连接
(2)gzip等是进行数据压缩
(3)cookie那是前端或浏览器携带的
(4)cache是前端或浏览器进行处理的
(5)状态码、接受请求referre等都是由服务器进行控制的

三、发散与追究
既然浏览器是通过写数据给服务器、通过socket或其他方式,而服务器也是下发数据给浏览器
那么,这个就不分语言,只要实现这类目的都可以是服务器。如此,服务器不限语言、不限思想、在于
自身如何应用。
既然如此,那如何去确认tomcat在这个原理上有什么过人之处,有时间去看看源码吧。既然如此,
那么,socket又是怎么去调用tcp的呢, http和socket、tcp这个链路又是怎样的?下篇博客见分解

相关文章
|
5月前
|
缓存 监控 Java
Java Socket编程最佳实践:优化客户端-服务器通信性能
【6月更文挑战第21天】Java Socket编程优化涉及识别性能瓶颈,如网络延迟和CPU计算。使用非阻塞I/O(NIO)和多路复用技术提升并发处理能力,减少线程上下文切换。缓存利用可减少I/O操作,异步I/O(AIO)进一步提高效率。持续监控系统性能是关键。通过实践这些策略,开发者能构建高效稳定的通信系统。
161 1
|
2月前
|
安全 Java 调度
Java编程时多线程操作单核服务器可以不加锁吗?
Java编程时多线程操作单核服务器可以不加锁吗?
43 2
|
5月前
|
Java 应用服务中间件 开发者
【实战指南】Java Socket编程:构建高效的客户端-服务器通信
【6月更文挑战第21天】Java Socket编程用于构建客户端-服务器通信。`Socket`和`ServerSocket`类分别处理两端的连接。实战案例展示了一个简单的聊天应用,服务器监听端口,接收客户端连接,并使用多线程处理每个客户端消息。客户端连接服务器,发送并接收消息。了解这些基础,加上错误处理和优化,能帮你开始构建高效网络应用。
411 10
|
5月前
|
IDE Java 开发工具
从零开始学Java Socket编程:客户端与服务器通信实战
【6月更文挑战第21天】Java Socket编程教程带你从零开始构建简单的客户端-服务器通信。安装JDK后,在命令行分别运行`SimpleServer`和`SimpleClient`。服务器监听端口,接收并回显客户端消息;客户端连接服务器,发送“Hello, Server!”并显示服务器响应。这是网络通信基础,为更复杂的网络应用打下基础。开始你的Socket编程之旅吧!
73 3
|
5月前
|
Java
Java Socket编程与多线程:提升客户端-服务器通信的并发性能
【6月更文挑战第21天】Java网络编程中,Socket结合多线程提升并发性能,服务器对每个客户端连接启动新线程处理,如示例所示,实现每个客户端的独立操作。多线程利用多核处理器能力,避免串行等待,提升响应速度。防止死锁需减少共享资源,统一锁定顺序,使用超时和重试策略。使用synchronized、ReentrantLock等维持数据一致性。多线程带来性能提升的同时,也伴随复杂性和挑战。
97 0
|
5月前
|
安全 Java 网络安全
Java Socket编程教程:构建安全可靠的客户端-服务器通信
【6月更文挑战第21天】构建安全的Java Socket通信涉及SSL/TLS加密、异常处理和重连策略。示例中,`SecureServer`使用SSLServerSocketFactory创建加密连接,而`ReliableClient`展示异常捕获与自动重连。理解安全意识,如防数据截获和中间人攻击,是首要步骤。通过良好的编程实践,确保网络应用在复杂环境中稳定且安全。
98 0
|
5月前
|
Java 数据安全/隐私保护
深入剖析:Java Socket编程原理及客户端-服务器通信机制
【6月更文挑战第21天】Java Socket编程用于构建网络通信,如在线聊天室。服务器通过`ServerSocket`监听,接收客户端`Socket`连接请求。客户端使用`Socket`连接服务器,双方通过`PrintWriter`和`BufferedReader`交换数据。案例展示了服务器如何处理每个新连接并广播消息,以及客户端如何发送和接收消息。此基础为理解更复杂的网络应用奠定了基础。
66 13
|
4月前
|
Java 数据格式
Java面试题:简述Java Socket编程的基本流程,包括客户端和服务器的创建与通信。
Java面试题:简述Java Socket编程的基本流程,包括客户端和服务器的创建与通信。
82 0
|
5月前
|
关系型数据库 应用服务中间件 数据库
编程入门(一)【Web服务器环境的部署】
编程入门(一)【Web服务器环境的部署】
104 1
|
5月前
|
网络协议 Java Linux
探索Java Socket编程:实现跨平台客户端-服务器通信的奥秘
【6月更文挑战第21天】Java Socket编程示例展示了如何构建跨平台聊天应用。服务器端使用`ServerSocket`监听客户端连接,每个连接启动新线程处理。客户端连接服务器,发送并接收消息。Java的跨平台能力确保代码在不同操作系统上无需修改即可运行,简化开发与维护。
56 0

热门文章

最新文章