Java之网络编程案例讲解

Java之网络编程案例讲解

网络编程概述

网络编程是指编写程序使计算机之间实现通信的过程。在网络编程中通信是指通过套接字Socket在两台计算机之间进行的。Socket 是应用层与TCP/IP协议族通信的通信端点,也是TCP/IP协议族中最重要定位方式之一。

Java网络编程

Java网络编程中能用来实现网络通信的类实在是太多了,这里我只列举几个常用的。

  • java.net.Socket: 套接字,是网络通信中的基本操作单元。
  • java.net.ServerSocket: 服务器套接字,用来监听来自客户端的请求。
  • java.net.URL: 统一资源定位符,它表示Internet上某一资源的地址,协议可以是HTTP、FTP、TELNET等。
  • java.net.DatagramSocket: 使用UDP协议的套接字实现数据报式数据的发送和接收。
  • java.net.MulticastSocket: 使用UDP协议的数据报套接字,可以将数据报发送到一个组中的所有的客户端上。
  • java.net.InetAddress: Java用它来代表IP地址。

Java网络编程案例

1. 简单的客户端和服务端通信

客户端连接服务端,服务端接收到客户端发送的消息并回复消息给客户端。

服务端代码:

public class Server {
    public static void main(String[] args) throws IOException {
        ServerSocket server = new ServerSocket(8888);
        System.out.println("服务端已启动,等待客户端连接...");
        Socket socket = server.accept();
        System.out.println("客户端已连接");
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String message = in.readLine();
        System.out.println("接收到客户端的消息:" + message);

        PrintWriter out = new PrintWriter(socket.getOutputStream());
        System.out.println("发送消息给客户端:Hello Client!");
        out.print("Hello Client!");
        out.flush();

        socket.close();
        server.close();
    }
}

客户端代码:

public class Client {
    public static void main(String[] args) throws IOException {
        String host = "localhost";
        int port = 8888;
        Socket socket = new Socket(host, port);
        PrintWriter out = new PrintWriter(socket.getOutputStream());
        System.out.println("发送消息给服务端:Hello Server!");
        out.print("Hello Server!");
        out.flush();

        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String message = in.readLine();
        System.out.println("接收到服务端的消息:" + message);

        socket.close();
    }
}

2. 简单的Web服务器

实现一个简单的Web服务器,当用户请求时,可以返回一个HTML页面给客户端。

public class SimpleWebServer {
    public static void main(String[] args) throws IOException {
        ServerSocket server = new ServerSocket(8888);
        System.out.println("Web服务器已启动,等待客户端请求...");
        while (true) {
            Socket clientSocket = server.accept();
            System.out.println("客户端请求: " + clientSocket);

            BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            String line = in.readLine();
            while (!line.isEmpty()) {
                System.out.println(line);
                line = in.readLine();
            }

            PrintWriter out = new PrintWriter(clientSocket.getOutputStream());
            out.println("HTTP/1.1 200 OK");
            out.println("Content-Type: text/html");
            out.println("");
            out.println("<html><body>");
            out.println("<h1>Hello World!</h1>");
            out.println("</body></html>");
            out.flush();

            clientSocket.close();
        }
    }
}

在浏览器中输入http://localhost:8888/即可查看效果。

以上是Java网络编程的简单例子,网络编程涉及到很多概念和协议,只有通过实际的实践才能理解得更深刻。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java之网络编程案例讲解 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • Java中Date日期时间类具体使用

    Java中Date日期时间类具体使用 在Java中,Date类是表示日期和时间的类。它是以毫秒为单位存储日期和时间的。Date类是Java中操作日期和时间最基本的类之一,下面我们来详细讲解一下关于Date类的使用。 1. 创建Date对象 Date对象可以通过无参构造方法创建,该方法将创建一个表示当前时间的Date对象。也可以通过给定时间戳的方式创建,表示从…

    Java 2023年5月20日
    00
  • 通过实例解析Java List正确使用方法

    通过实例解析Java List正确使用方法 一、List介绍 List是Java中最常见的集合类型之一,它表示一个有序的、可重复的元素集合。List接口继承自Collection接口,支持一系列针对列表元素的操作,如添加、删除、访问、排序等。Java中的List有多种实现,如ArrayList、LinkedList等,各自具有不同的特点和适用场景。 二、Ja…

    Java 2023年5月26日
    00
  • Java运行Jar包内存配置的操作

    下面是关于Java运行Jar包内存配置的完整攻略: 一、什么是JVM内存 Java虚拟机(JVM)是一个程序,它能够执行Java字节码。而JVM内部的内存管理,也就是内存分配和垃圾回收机制,对程序的性能和稳定性都有着重要的影响。Java运行时内存主要分为两部分: 堆内存和 非堆内存。 在Java程序运行时,JVM需要分配一定的内存空间用于执行程序。其中,堆内…

    Java 2023年5月26日
    00
  • Java的Jackson库中复杂对象集合的几种简单转换

    下面是详细讲解Jackson库中复杂对象集合的转换攻略。 1. 背景介绍 Jackson是一个在Java语言中操作JSON数据的类库。在项目中,经常需要对复杂对象集合进行操作,例如:List、Set、Map等等。在Jackson库中,我们可以通过不同的方式将这些复杂对象集合转换成JSON数据格式。本篇攻略会介绍Jackson库中几种转换复杂对象集合的方法。 …

    Java 2023年5月26日
    00
  • spring security登录成功后跳转回登录前的页面

    确保实现“spring security登录成功后跳转回登录前的页面”的功能,需要进行以下步骤: 配置页面跳转 在spring的配置文件中,需要将页面跳转的路径配置到spring security中。可以使用默认的登录页,也可以自定义一个登录页。 使用默认的登录页: <http> <form-login login-page="/…

    Java 2023年5月20日
    00
  • Spring源码分析容器启动流程

    下面是针对“Spring源码分析容器启动流程”的完整攻略。 1. 前言 Spring是一个非常流行的Java开发框架,它最基本的组成部分就是一个IOC容器。在了解Spring的使用过程中,我们需要知道Spring容器启动的过程,这样可以更好的理解Spring的原理和运作机制。 2. Spring容器启动流程概述 Spring容器启动流程可以分为以下几个基本步…

    Java 2023年5月31日
    00
  • Mybatis在注解上如何实现动态SQL

    Mybatis支持在注解上实现动态SQL。在注解中使用动态SQL,可以使代码更加简洁,易于维护。下面是Mybatis在注解上实现动态SQL的攻略: 前置条件 使用Mybatis在注解上实现动态SQL,需要先引入Mybatis框架和Mybatis-Spring,同时还需要在mybatis-config.xml中配置相关参数。 实现步骤 1. 创建Mapper接…

    Java 2023年5月20日
    00
  • JAVAEE中用Session简单实现购物车功能示例代码

    我会为你提供一份详细的JAVAEE中使用Session简单实现购物车功能的攻略。 首先,我们需要了解一下Session的概念:Session是在服务器端保存用户信息的机制,通过Session可以在同一客户端多次请求之间保持用户的信息,而且Session只存在于服务器端,不会像Cookie那样被客户端读取或篡改。 那么接下来,我们就可以开始实现一个简单的购物车…

    Java 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部