欢迎访问宙启技术站
智能推送

Java函数库小技巧:网络编程实用工具

发布时间:2023-06-10 03:38:07

Java作为一门广泛应用于网络编程中的编程语言,在网络编程中涉及到了许多常用的工具类,例如Socket、URL等等,本文将从常用的网络编程实用工具库入门开始,列举出一些Java应用于网络编程中的函数库,并且附上实际代码,以供大家参考。

一、Socket

Java Socket是网络通讯中极为重要的一个类库,Socket类是Java Socket编程的核心,它提供了TCP和UDP协议的网络套接字(Socket),实现了应用程序之间的双向通信,本文将会通过最基础的操作入手。

1.实现连接服务器

connect方法用于请求与指定IP和端口的服务器建立连接,该方法会阻塞调用线程直到连接成功或者出现异常。

public static void main(String[] args) throws Exception {
    Socket socket = new Socket("127.0.0.1", 8080);
}

2.发送数据

在连接建立后,可以通过OutputStream类获取Socket的输出流,并使用write方法向服务器发送数据。

public static void main(String[] args) throws Exception {
    Socket socket = new Socket("127.0.0.1", 8080);
    OutputStream outputStream = socket.getOutputStream();
    outputStream.write("Hello, World!".getBytes());
}

3.接收数据

在连接建立后,可以通过InputStream类获取Socket的输入流,并使用read方法从服务器接收数据。

public static void main(String[] args) throws Exception {
    Socket socket = new Socket("127.0.0.1", 8080);
    InputStream inputStream = socket.getInputStream();
    byte[] buffer = new byte[1024];
    int len;
    while ((len = inputStream.read(buffer)) != -1) {
        String data = new String(buffer, 0, len);
        System.out.println(data);
    }
}

4.关闭连接

使用完Socket之后,需要使用close方法关闭连接。

public static void main(String[] args) throws Exception {
    Socket socket = new Socket("127.0.0.1", 8080);
    socket.close();
}

二、URL

Java中的URL类可以用于访问网络资源,例如网页、图片等等,URL类可以接收一个URL地址作为参数,并获取这个URL的各种信息,例如协议、主机名、端口号、路径、查询字符串等等。

1.创建URL对象

创建URL对象可以通过传入一个URL字符串来实现。

public static void main(String[] args) throws Exception {
    URL url = new URL("http://www.baidu.com");
}

2.获取URL信息

获取URL信息可以通过一系列的get方法来实现。

public static void main(String[] args) throws Exception {
    URL url = new URL("http://www.baidu.com");
    System.out.println("Protocol: " + url.getProtocol());
    System.out.println("Host: " + url.getHost());
    System.out.println("Port: " + url.getPort());
    System.out.println("Path: " + url.getPath());
    System.out.println("Query: " + url.getQuery());
}

3.读取网页内容

可以通过openStream方法获取URL的输入流,并读取其中的内容。

public static void main(String[] args) throws Exception {
    URL url = new URL("http://www.baidu.com");
    BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
}

三、InetAddress

Java中的InetAddress类用于表示IP地址,可以通过getByName或者getAllByName方法获取一个IP地址,本文将介绍如何使用getHostAddress方法获取IP地址,并且使用getHostName方法获取主机名。

public static void main(String[] args) throws Exception {
    InetAddress address = InetAddress.getByName("www.baidu.com");
    System.out.println("Host Address: " + address.getHostAddress());
    System.out.println("Host Name: " + address.getHostName());
}

四、URLConnection

Java中的URLConnection类可以用于访问URL地址,它提供了支持HTTP协议的功能,能够模拟使用浏览器访问URL并获取其中的内容。

1.创建URLConnection对象

创建URLConnection对象可以通过URL对象的openConnection方法。

public static void main(String[] args) throws Exception {
    URL url = new URL("http://www.baidu.com");
    URLConnection connection = url.openConnection();    
}

2.设置请求头和请求参数

可以通过addRequestProperty方法向URLConnection对象添加请求头属性,并且通过setDoOutput方法开启输出流,从而将请求内容写入URLConnection对象中,例如以下代码:

public static void main(String[] args) throws Exception {
    URL url = new URL("http://www.baidu.com");
    URLConnection connection = url.openConnection();
    connection.addRequestProperty("Accept", "*/*");
    connection.setDoOutput(true);
    OutputStream outputStream = connection.getOutputStream();
    outputStream.write("Hello, World!".getBytes());
}

3.读取返回内容

可以通过getInputStream方法获取URLConnection对象的输入流,并读取其中的内容。

public static void main(String[] args) throws Exception {
    URL url = new URL("http://www.baidu.com");
    URLConnection connection = url.openConnection();
    BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
}

以上就是Java应用于网络编程中的一些常用函数库,涉及到了Socket、URL、InetAddress、URLConnection,掌握这些函数库的使用,可以使得Java程序在网络编程中变得越来越快捷、简洁、优雅。