Java入门(7)--网络编程

Java网络编程:构建网络应用的基石 🌐

🎯 掌握Java网络编程,打造强大的网络应用!

在上一篇文章中,我们探讨了Java的I/O操作和反射机制。今天,让我们深入学习Java网络编程,了解如何构建网络应用程序! 💻

1. 网络编程基础 📡

Java提供了强大的网络编程API,支持各种网络协议和通信模式。让我们从基础概念开始学习。

1.1 网络基础概念

  • IP地址:网络设备的唯一标识
  • 端口号:应用程序的通信端点
  • 协议:通信规则(如TCP、UDP)
  • Socket:网络通信的端点
public class NetworkBasics {
   
    public static void main(String[] args) throws Exception {
   
        // 获取本机IP地址
        InetAddress localHost = InetAddress.getLocalHost();
        System.out.println("本机IP地址:" + localHost.getHostAddress());
        
        // 解析域名
        InetAddress github = InetAddress.getByName("github.com");
        System.out.println("GitHub IP地址:" + github.getHostAddress());
        
        // 检查主机可达性
        boolean reachable = github.isReachable(5000);
        System.out.println("GitHub是否可达:" + reachable);
    }
}

1.2 URL处理

public class URLExample {
   
    public static void main(String[] args) {
   
        try {
   
            URL url = new URL("https://api.github.com/users/octocat");
            
            // 获取URL信息
            System.out.println("协议:" + url.getProtocol());
            System.out.println("主机:" + url.getHost());
            System.out.println("端口:" + url.getPort());
            System.out.println("路径:" + url.getPath());
            
            // 读取URL内容
            try (BufferedReader reader = new BufferedReader(
                    new InputStreamReader(url.openStream()))) {
   
                String line;
                while ((line = reader.readLine()) != null) {
   
                    System.out.println(line);
                }
            }
            
        } catch (IOException e) {
   
            System.out.println("URL处理错误:" + e.getMessage());
        }
    }
}

2. Socket编程 🔌

Socket是网络编程的核心,让我们通过实例来学习TCP和UDP通信。

2.1 TCP通信示例

服务器端代码:

public class TCPServer {
   
    public static void main(String[] args) {
   
        try (ServerSocket serverSocket = new ServerSocket(8888)) {
   
            System.out.println("服务器启动,等待连接...");
            
            while (true) {
   
                Socket clientSocket = serverSocket.accept();
                System.out.println("客户端已连接:" + clientSocket.getInetAddress());
                
                // 处理客户端请求
                new Thread(() -> handleClient(clientSocket)).start();
            }
        } catch (IOException e) {
   
            System.out.println("服务器错误:" + e.getMessage());
        }
    }
    
    private static void handleClient(Socket clientSocket) {
   
        try (
            BufferedReader reader = new BufferedReader(
                new InputStreamReader(clientSocket.getInputStream()));
            PrintWriter writer = new PrintWriter(
                clientSocket.getOutputStream(), true)
        ) {
   
            String message;
            while ((message = reader.readLine()) != null) {
   
                System.out.println("收到消息:" + message);
                writer.println("服务器收到:" + message);
            }
        } catch (IOException e) {
   
            System.out.println("客户端处理错误:" + e.getMessage());
        }
    }
}

客户端代码:

public class TCPClient {
   
    public static void main(String[] args) {
   
        try (
            Socket socket = new Socket("localhost", 8888);
            BufferedReader reader = new BufferedReader(
                new InputStreamReader(socket.getInputStream()));
            PrintWriter writer = new PrintWriter(
                socket.getOutputStream(), true);
            BufferedReader consoleReader = new BufferedReader(
                new InputStreamReader(System.in))
        ) {
   
            System.out.println("已连接到服务器");
            
            String message;
            while ((message = consoleReader.readLine()) != null) {
   
                writer.println(message);
                System.out.println("服务器响应:" + reader.readLine());
            }
            
        } catch (IOException e) {
   
            System.out.println("客户端错误:" + e.getMessage()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值