当前位置: 首页 > news >正文

Java网络编程深度解析

一、网络编程基础概念

1.1 网络协议分层模型

Java网络编程主要基于TCP/IP协议栈,理解分层模型至关重要:

  • OSI七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
  • TCP/IP四层模型:网络接口层、网络层、传输层、应用层
  • Java主要涉及的层次:传输层(TCP/UDP)和应用层(HTTP/FTP等)

1.2 关键网络概念

  • IP地址:设备的网络标识(IPv4/IPv6)
  • 端口号:0-65535,标识主机上的特定服务
  • Socket:网络通信的端点,IP地址+端口号
  • 协议:TCP(可靠连接)和UDP(无连接)

二、Java网络编程核心API

2.1 Java.net包核心类

// TCP相关
Socket          // 客户端Socket
ServerSocket    // 服务端Socket
// UDP相关
DatagramSocket  
DatagramPacket
// URL处理
URL
URLConnection
HttpURLConnection

2.2 NIO包(New I/O)

ByteBuffer
Channel         // SocketChannel, ServerSocketChannel
Selector        // 多路复用选择器
Charset         // 字符编码处理

三、TCP编程实战

3.1 基础TCP通信实现

服务端代码示例

import java.io.*;
import java.net.*;public class TCPServer {public static void main(String[] args) throws IOException {// 1. 创建ServerSocket,监听指定端口ServerSocket serverSocket = new ServerSocket(8888);System.out.println("服务器启动,等待客户端连接...");// 2. 接受客户端连接Socket clientSocket = serverSocket.accept();System.out.println("客户端连接成功:" + clientSocket.getInetAddress());// 3. 获取输入输出流BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);// 4. 通信循环String request;while ((request = in.readLine()) != null) {System.out.println("收到客户端消息:" + request);String response = "服务器响应:" + request.toUpperCase();out.println(response);}// 5. 关闭资源clientSocket.close();serverSocket.close();}
}

客户端代码示例

import java.io.*;
import java.net.*;public class TCPClient {public static void main(String[] args) throws IOException {// 1. 创建Socket连接服务器Socket socket = new Socket("localhost", 8888);// 2. 获取输入输出流BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));PrintWriter out = new PrintWriter(socket.getOutputStream(), true);// 3. 用户输入处理BufferedReader userInput = new BufferedReader(new InputStreamReader(System.in));System.out.println("请输入消息(输入exit退出):");String userMsg;while ((userMsg = userInput.readLine()) != null) {if ("exit".equalsIgnoreCase(userMsg)) break;// 4. 发送消息并接收响应out.println(userMsg);String response = in.readLine();System.out.println("服务器响应:" + response);}// 5. 关闭连接socket.close();}
}

3.2 多线程TCP服务器

处理多个客户端连接:

import java.io.*;
import java.net.*;public class MultiThreadTCPServer {public static void main(String[] args) throws IOException {ServerSocket serverSocket = new ServerSocket(8888);System.out.println("多线程服务器启动...");while (true) {
http://www.dtcms.com/a/251165.html

相关文章:

  • 实战指南:部署MinerU多模态文档解析API与Dify深度集成(实现解析PDF/JPG/PNG)
  • 大模型<闲谈>
  • 以太网交换机交换表的建立
  • 234. 回文链表
  • AI驱动SEO关键词精准布局
  • Java微服务框架技术选型全景报告
  • JSONP 跨域请求原理解析与实践
  • LeetCode--31.下一个排列
  • 【编程语言】从C++到Java到Golang,语法特性对比与开发实践指南(基础语法,类型系统,运行机制)
  • 从零开始掌握 Docker:核心命令与实践指南
  • 哈希函数结构:从MD到海绵的进化之路
  • npm install报错
  • MAZANOKE:一款隐私优先的浏览器图像优化工具及Docker部署指南
  • JVM——JVM中的扩展之道
  • ubuntu 22.04 安装部署kibana 7.10.0详细教程
  • leetcode 分割回文串 java
  • 深度对话:TensorFlow与PyTorch的API哲学——如何影响你的模型调试与生产部署?
  • Node.js 中两种模块导出方式区别
  • 数据质量-如何构建高质量的大模型数据集
  • .net6接口多个实现类使用特性标记并解析
  • JavaScript 与 Vue 键盘事件全面指南(Composition API + <script setup>)
  • [AAAI Oral] 简单通用的公平分类方法
  • WebRTC(四):STUN协议
  • Redis全面深入学习目录
  • 02-D3.js 控制横向柱图切换数据带动画效果
  • 微信小程序使用computed
  • Python文件与目录操作管理详解
  • 【系统分析师】2011年真题:综合知识-答案及详解
  • 条件收敛的级数中项必须趋于 0,正负项抵消,但趋于 0 的速度不需要“足够快”
  • 《仿盒马》app开发技术分享-- 回收金提现安全锁校验(端云一体)