网络编程和http协议和Tomcat模拟
发布日期:2021-05-14 16:56:15 浏览次数:14 分类:精选文章

本文共 2658 字,大约阅读时间需要 8 分钟。

网络编程和HTTP协议与Tomcat模拟

1. 网络编程基础

网络将分布在不同地理区域的计算机与外部设备通过通信线路连接,形成一个功能强大的网络系统,使各计算机能够方便地信息交换和资源共享。

2. IP地址

(1)IP地址概念

IP地址是互联网上标识计算机的唯一标记,可用于定位特定计算机设备。

(2)IP地址分类
  • IPv4地址:32位,分4段(0-255),用圆点隔开,例如:192.168.1.1
  • IPv6地址:128位,分8段(0000-FFFF),用冒号分隔,例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334
  • (3)地址分类与使用
    • A类地址:1.0.0.1~126.255.255.254,主要用于政府机构
    • B类地址:128.0.0.1~191.255.255.254,适用于中等规模公司
    • C类地址:192.0.0.1~199.223.255.254,供普通用户使用
    • D类地址:224.0.0.1~239.255.255.254,主要用于组播
    • E类地址:240.0.0.1~255.255.255.254,用于实验和测试

    3. 端口

    (1)端口概念

    端口是一个16位的标识符(0~65535),用于指定系统中不同应用程序的唯一通信口团口。

    (2)端口分类
  • 公认端口(0~1023):供系统级服务使用
  • 注册端口(1024~49151):供用户级应用程序使用
  • 动态端口(49152~65535):临时使用的端口
  • 4. URL

    (1)URL结构
    • 格式:协议://主机IP地址:端口/路径
    • 例子:http://172.16.103.5:8088/class_info/java_jichu.html
    (2)常用方法
    • 创建URL对象:
    URL url = new URL("http", "172.16.103.5", 8088, "/class_info/java_jichu.html");
    • 打开URL:
    InputStream openStream = url.openStream();
    • URL编码与解码:
    String str = "http://www.lty.com/祈心.gif";
    String encode = URLEncoder.encode(str, "UTF-8"); // URLEncode方法
    String decode = URLDecoder.decode("%E7%A5%88%E5%BF%83", "UTF-8"); // URLDecode方法

    5. TCP协议

    (1)TCP特点
    • 连接式协议:三次握手后建立连接
    • 可靠性:保证数据完整性和顺序
    • 流模式:数据以流的形式传输
    • 安全性:通过握手建立信任关系

    6. UDP协议

    (1)UDP特点
    • 无连接:直接发送数据报
    • 不可靠:可能丢包、无序
    • 数据报模式:轻量级数据传输
    • 强调速度:连接建立时间短,传输速度快

    7. HTTP协议

    (1)HTTP请求对象
    • 请求行:Method Request-URI HTTP-Version
    • 消息报头:包括用户-agent、授权信息等
    • 请求正文:附加的数据(如表单信息)
    (2)HTTP响应对象
    • 状态码:如200 OK、404 Forbidden等
    • 消息头:Content-Type、Content-Length等
    • 正文:服务器返回的资源数据

    8. Tomcat模拟

    (1)客户端连接代码
    public static void main(String[] args) throws IOException {
    ServerSocket ss = new ServerSocket(9699);
    Socket accept = ss.accept();
    InputStream is = accept.getInputStream();
    InputStreamReader isr = new InputStreamReader(is);
    BufferedReader br = new BufferedReader(isr);
    String readLine = br.readLine();
    String path = readLine.split(" ")[1];
    File file = new File("F:" + path);
    FileInputStream fis = new FileInputStream(file);
    OutputStream os = accept.getOutputStream();
    PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));
    pw.println("HTTP/1.1 200 OK");
    pw.println("Content-Type: text/html; charset=UTF-8");
    pw.println("Content-Length: " + file.length());
    byte[] b = new byte[1024];
    while ((len = fis.read(b)) != -1) {
    String str = new String(b, 0, len);
    pw.write(str);
    }
    }
    (2)服务器代码示例

    上述客户端与以下服务器代码配合使用:

    public static void main(String[] args) throws UnknownHostException, IOException {
    Socket s = new Socket("localhost", 9699);
    OutputStream os = s.getOutputStream();
    PrintStream ps = new PrintStream(os);
    ps.println("file CONTENT");
    ps.close();
    os.close();
    }

    这些代码可以模拟简化的Tomcat服务器环境,用于测试HTTP通信和文件下载功能。

    上一篇:Tomcat&Web结构&Servlet入门
    下一篇:HTML和CSS

    发表评论

    最新留言

    留言是一种美德,欢迎回访!
    [***.207.175.100]2025年04月27日 09时55分33秒