java基础篇(java的网络编程)

Java的网络编程主要通过java.net包中的类和接口来实现。这个包提供了用于创建网络应用程序的类,包括客户端和服务器端的通信。以下是一些常用的类和接口:

1. Socket 和 ServerSocket

  • Socket:用于客户端,表示一个连接到服务器的套接字。
  • ServerSocket:用于服务器端,监听客户端的连接请求。
示例:简单的TCP客户端和服务器

服务器端代码:

import java.io.*;
import java.net.*;

public class TCPServer {
    public static void main(String[] args) {
        try (ServerSocket serverSocket = new ServerSocket(12345)) {
            System.out.println("服务器已启动,等待客户端连接...");
            try (Socket clientSocket = serverSocket.accept()) {
                System.out.println("客户端已连接:" + clientSocket.getInetAddress());
                try (BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
                     PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true)) {
                    String inputLine;
                    while ((inputLine = in.readLine()) != null) {
                        System.out.println("收到客户端消息:" + inputLine);
                        out.println("服务器已收到:" + inputLine);
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

客户端代码:

import java.io.*;
import java.net.*;

public class TCPClient {
    public static void main(String[] args) {
        try (Socket socket = new Socket("localhost", 12345)) {
            System.out.println("已连接到服务器");
            try (BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                 PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
                 BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in))) {
                String userInput;
                while ((userInput = stdIn.readLine()) != null) {
                    out.println(userInput);
                    System.out.println("服务器回复:" + in.readLine());
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2. DatagramSocket 和 DatagramPacket

  • DatagramSocket:用于发送和接收UDP数据包。
  • DatagramPacket:表示UDP数据包。
示例:简单的UDP客户端和服务器

服务器端代码:

import java.io.*;
import java.net.*;

public class UDPServer {
    public static void main(String[] args) {
        try (DatagramSocket socket = new DatagramSocket(12345)) {
            byte[] buffer = new byte[1024];
            DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
            System.out.println("服务器已启动,等待客户端消息...");
            while (true) {
                socket.receive(packet);
                String received = new String(packet.getData(), 0, packet.getLength());
                System.out.println("收到客户端消息:" + received);
                String reply = "服务器已收到:" + received;
                DatagramPacket replyPacket = new DatagramPacket(reply.getBytes(), reply.length(), packet.getAddress(), packet.getPort());
                socket.send(replyPacket);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

客户端代码:

import java.io.*;
import java.net.*;

public class UDPClient {
    public static void main(String[] args) {
        try (DatagramSocket socket = new DatagramSocket()) {
            InetAddress address = InetAddress.getByName("localhost");
            byte[] buffer;
            DatagramPacket packet;
            BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
            String userInput;
            while ((userInput = stdIn.readLine()) != null) {
                buffer = userInput.getBytes();
                packet = new DatagramPacket(buffer, buffer.length, address, 12345);
                socket.send(packet);
                buffer = new byte[1024];
                packet = new DatagramPacket(buffer, buffer.length);
                socket.receive(packet);
                String received = new String(packet.getData(), 0, packet.getLength());
                System.out.println("服务器回复:" + received);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3. URL 和 URLConnection

  • URL:表示一个统一资源定位符,指向万维网上的资源。
  • URLConnection:用于与URL进行通信。
示例:使用URLURLConnection读取网页内容
import java.io.*;
import java.net.*;

public class URLExample {
    public static void main(String[] args) {
        try {
            URL url = new URL("https://www.example.com");
            URLConnection connection = url.openConnection();
            try (BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
                String inputLine;
                while ((inputLine = in.readLine()) != null) {
                    System.out.println(inputLine);
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这些示例展示了Java网络编程的基本用法,包括TCP和UDP通信以及通过URL读取网页内容。根据具体需求,可以选择合适的类和方法来实现网络应用程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值