📜  Java socket编程(1)

📅  最后修改于: 2023-12-03 14:42:16.119000             🧑  作者: Mango

Java Socket编程介绍

什么是Socket编程?

Socket编程是一种用于网络通信的编程技术。它可以使得两个不同的设备(可以是同一台计算机或者两台不同的计算机)通过网络进行通信。Java提供了一组类库,可以通过这些类库来实现Socket编程。这个类库叫做Java Socket。

什么是Java Socket?

Java Socket是Java SE中提供的一个类库,用于实现Socket编程。它包含了一些类,比如Socket、ServerSocket、DatagramSocket等等,这些类可以用来创建客户端和服务端程序,从而进行网络通信。

Socket编程的基本原理

Socket编程的基本原理是:客户端程序和服务端程序都通过Socket连接到网络,然后通过Socket连接进行通信。整个通信的过程可以分为以下几步:

  1. 客户端程序创建一个Socket对象,并连接到服务端程序;
  2. 服务端程序接收到客户端的请求,并创建一个新的Socket对象,用于和客户端通信;
  3. 客户端和服务端通过各自的Socket对象进行通信;
  4. 通信完成后,客户端和服务端关闭自己的Socket连接。

在Java中,可以使用Socket、ServerSocket、DatagramSocket等类,来实现Socket编程。

基本代码示例
客户端代码
import java.io.*;
import java.net.*;

public class Client {
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("localhost", 8080); // 连接到服务端
        PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

        out.println("Hello, Server!"); // 发送消息给服务端
        String msg = in.readLine(); // 接收服务端返回的消息
        System.out.println(msg);

        out.close();
        in.close();
        socket.close(); // 关闭客户端Socket连接
    }
}
服务端代码
import java.io.*;
import java.net.*;

public class Server {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(8080); // 监听端口
        Socket socket = serverSocket.accept(); // 等待客户端连接

        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

        String msg = in.readLine(); // 接收来自客户端的消息
        System.out.println(msg);
        out.println("Hello, Client!"); // 发送消息给客户端

        out.close();
        in.close();
        socket.close(); // 关闭服务端Socket连接
        serverSocket.close();
    }
}
总结

通过Java Socket编程可以实现客户端与服务端之间的网络通信,其基本原理是通过Socket连接来进行通信。Java Socket类库提供了一些类,如Socket、ServerSocket、DatagramSocket等等,用于实现Socket编程。在代码实现过程中,通常需要创建Socket连接、输入输出流等等。