
网络编程和http协议和Tomcat模拟
IPv4地址:32位,分4段(0-255),用圆点隔开,例如:192.168.1.1 IPv6地址:128位,分8段(0000-FFFF),用冒号分隔,例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334 公认端口(0~1023):供系统级服务使用 注册端口(1024~49151):供用户级应用程序使用 动态端口(49152~65535):临时使用的端口
发布日期:2021-05-14 16:56:15
浏览次数:14
分类:精选文章
本文共 2658 字,大约阅读时间需要 8 分钟。
网络编程和HTTP协议与Tomcat模拟
1. 网络编程基础
网络将分布在不同地理区域的计算机与外部设备通过通信线路连接,形成一个功能强大的网络系统,使各计算机能够方便地信息交换和资源共享。
2. IP地址
(1)IP地址概念
IP地址是互联网上标识计算机的唯一标记,可用于定位特定计算机设备。
(2)IP地址分类
(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)端口分类
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通信和文件下载功能。
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月27日 09时55分33秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
并查集(求连通块数量)
2019-03-11
最大半连通子图
2019-03-11
Remove Extra one 维护前缀最大最小值
2019-03-11
跳台阶
2019-03-11
另类加法,走方格的方案数,最近公共祖先
2019-03-11
线程学习5
2021-05-14
[Java Path Finder][JPF学习笔记][7]JPF输出详细程度设置
2021-05-14
GitHub完整记录数据库GHTorrent的下载和安装经验
2021-05-14
设计模式—— 三:依赖倒置原则
2021-05-14
SpringBoot打包之后乱码
2021-05-14
因SGA分配错误无法启动数据库
2021-05-14
Oracle修改字段类型方法总结
2021-05-14
ORA-00020 超过当前最大连接数
2021-05-14
合理控制oracle数据库具有DBA权限的用户
2021-05-14
【Android】源码分析 - Activity启动流程
2021-05-14
喝红茶是否会上火
2021-05-14
Android进阶解密读书笔记2——第2章:Android系统启动——第1、2小节
2021-05-14
GreenDao之注解
2021-05-14
Android使用Font Awesome
2021-05-14