Java网络编程起步:Socket与ServerSocket通信实例

云端之上 2020-06-28 ⋅ 15 阅读

Java网络编程是指使用Java语言进行网络通信的技术,在现代的网络应用中被广泛应用。本文将介绍如何使用Java中的Socket和ServerSocket类进行简单的网络通信。

什么是Socket和ServerSocket

Socket是一种抽象封装了底层通信细节的类,可以用于建立网络连接、发送和接收数据。Socket类提供了一套通用的网络通信接口,适用于不同的网络协议。

ServerSocket是服务器端使用的套接字,用于监听客户端请求并建立连接。ServerSocket类可以接受和处理来自客户端的请求,在建立连接后创建一个新的Socket对象与客户端进行通信。

简单的Socket通信实例

下面是一个简单的Java程序示例,演示了如何使用Socket和ServerSocket进行简单的服务器-客户端通信。

服务器端代码

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) {
        try {
            // 创建ServerSocket对象,监听指定端口
            ServerSocket serverSocket = new ServerSocket(8888);
            System.out.println("Server started, waiting for client...");

            // 等待客户端连接
            Socket socket = serverSocket.accept();
            System.out.println("Client connected");

            // 获取输入输出流
            InputStream inputStream = socket.getInputStream();
            OutputStream outputStream = socket.getOutputStream();

            // 接收客户端发送的数据
            byte[] buffer = new byte[1024];
            int length = inputStream.read(buffer);
            System.out.println("Received: " + new String(buffer, 0, length));

            // 向客户端发送数据
            String message = "Hello, client!";
            outputStream.write(message.getBytes());

            // 关闭连接
            inputStream.close();
            outputStream.close();
            socket.close();
            serverSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

客户端代码

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class Client {
    public static void main(String[] args) {
        try {
            // 创建Socket对象,连接指定服务器和端口
            Socket socket = new Socket("localhost", 8888);

            // 获取输入输出流
            InputStream inputStream = socket.getInputStream();
            OutputStream outputStream = socket.getOutputStream();

            // 向服务器发送数据
            String message = "Hello, server!";
            outputStream.write(message.getBytes());

            // 接收服务器返回的数据
            byte[] buffer = new byte[1024];
            int length = inputStream.read(buffer);
            System.out.println("Received: " + new String(buffer, 0, length));

            // 关闭连接
            inputStream.close();
            outputStream.close();
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

运行结果

  1. 先运行服务器端代码,控制台会输出"Server started, waiting for client...";
  2. 再运行客户端代码,控制台会输出"Received: Hello, server!";
  3. 服务器端代码的控制台会输出"Client connected"和"Received: Hello, client!";
  4. 运行结果证明了服务器和客户端之间的数据交换成功。

总结

本文介绍了Java网络编程中的Socket和ServerSocket类,并给出了一个简单的服务器-客户端通信实例。通过学习和掌握Socket和ServerSocket的使用,可以进一步深入理解和应用网络编程技术,实现更复杂的网络应用程序。希望本文能为初学者提供一个良好的入门指南。


全部评论: 0

    我有话说: