乐趣区

关于人工智能:61-网络基础知识

在开始学习 Java 网络编程之前,首先让咱们理解一些对于网络基础知识的内容。网络编程次要波及到计算机网络、网络协议、数据通信等方面的常识。接下来,我将尽量具体、通俗易懂地介绍这些概念。

计算机网络

计算机网络是指将地理位置不同的计算机和其余设施通过通信链路(如光纤、无线电波等)连贯在一起,实现资源共享和信息传递的零碎。依据规模和覆盖范围,计算机网络能够分为局域网(LAN)、城域网(MAN)和广域网(WAN)等。

网络协议

网络协议是计算机网络中数据交换的规定和约定。这些规定定义了数据在网络中的传输格局、速率、编码方式等。常见的网络协议有:IP(Internet Protocol)、TCP(Transmission Control Protocol)、UDP(User Datagram Protocol)等。

IP 地址

IP 地址是 Internet 协定(IP)为每个连贯到网络的设施调配的惟一标识符。IPv4 地址由 4 个 0 -255 的数字组成,用点分隔,如 192.168.1.1。IPv6 地址则是由 8 组 16 进制数示意,用冒号分隔,如 2001:0db8:85a3:0000:0000:8a2e:0370:7334。

端口号

端口号是用于辨别同一设施上不同网络应用程序的整数标识符,范畴为 0 -65535。其中,0-1023 是保留的零碎端口,通常用于零碎和常见网络服务,如 HTTP(80)、HTTPS(443)等。

TCP 与 UDP

TCP 和 UDP 是传输层协定,用于在网络中传输数据。TCP 是面向连贯的协定,提供牢靠的数据传输服务。它通过握手和确认机制确保数据在网络中的正确传输。UDP 是无连贯的协定,不提供数据传输的可靠性保障,但具备较低的传输提早。

接下来,让咱们通过一个简略的 Java 网络编程实例来理解如何应用 Socket 编程实现客户端和服务器之间的通信。

1. 创立服务器

首先,咱们创立一个简略的服务器,监听一个端口,期待客户端连贯:

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class SimpleServer {public static void main(String[] args) {
        int port = 8080;

        try (ServerSocket serverSocket = new ServerSocket(port);
             Socket socket = serverSocket.accept();
             BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
             PrintWriter out = new PrintWriter(socket.getOutputStream(), true)) {System.out.println("服务器已启动,期待客户端连贯...");

            String inputLine;
            while ((inputLine = in.readLine()) != null) {System.out.println("客户端发送音讯:" + inputLine);
                out.println("服务器已收到:" + inputLine);
                if ("exit".equalsIgnoreCase(inputLine)) {break;}
            }
        } catch (IOException e) {e.printStackTrace();
        }
    }
}

2. 创立客户端

接下来,创立一个简略的客户端,连贯到服务器并发送音讯:

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

public class SimpleClient {public static void main(String[] args) {
        String host = "localhost";
        int port = 8080;

        try (Socket socket = new Socket(host, port);
             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());
                if ("exit".equalsIgnoreCase(userInput)) {break;}
            }
        } catch (IOException e) {e.printStackTrace();
        }
    }
}

当初,您能够运行 SimpleServer 类和 SimpleClient 类,它们将别离启动服务器和客户端。在客户端控制台中输出音讯,它将被发送到服务器,服务器会响应一个确认音讯。当你在客户端输出 ”exit” 时,通信将完结。

这个简略的示例展现了如何应用 Java Socket 编程实现根本的客户端和服务器之间的通信。在理论利用中,您可能须要解决更简单的场景,例如多线程、并发连贯、非阻塞 I / O 等。然而,这个示例应该足够帮忙您开始学习 Java 网络编程。

心愿这些内容对您有所帮忙!如果您有任何问题或须要进一步解释,请随时发问。
举荐浏览:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

退出移动版