引言

在互联网时代,网络编程是软件开发中不可或缺的一部分。Java作为一种广泛应用于企业级应用开发的语言,其强大的网络编程能力使其成为网络编程的首选语言之一。Socket编程是Java网络编程的核心,本文将带领读者从入门到实战,轻松掌握Socket编程技巧。

Socket编程基础

1. 什么是Socket?

Socket是一种特殊的接口,它允许两个程序在网络上进行通信。在Java中,Socket编程是通过java.net包中的类和接口实现的。

2. Socket编程模型

Socket编程模型主要包括两种类型:客户端-服务器模型和服务器端模型。

  • 客户端-服务器模型:客户端向服务器发送请求,服务器接收请求并处理,然后将结果返回给客户端。
  • 服务器端模型:服务器端主动向客户端发送数据。

3. Socket编程的基本步骤

  1. 创建Socket对象。
  2. 建立连接。
  3. 发送和接收数据。
  4. 关闭连接。

Socket编程实战

1. 客户端-服务器模型

以下是一个简单的客户端-服务器模型示例:

服务器端代码

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

public class Server {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(6666);
        System.out.println("服务器启动,等待客户端连接...");
        Socket socket = serverSocket.accept();
        System.out.println("客户端连接成功!");
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String line;
        while ((line = in.readLine()) != null) {
            System.out.println("客户端:" + line);
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
            out.println("你好,客户端!");
        }
        socket.close();
        serverSocket.close();
    }
}

客户端代码

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

public class Client {
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("localhost", 6666);
        System.out.println("连接服务器成功!");
        PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        out.println("你好,服务器!");
        System.out.println("服务器:" + in.readLine());
        socket.close();
    }
}

2. 服务器端模型

以下是一个简单的服务器端模型示例:

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

public class Server {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(6666);
        System.out.println("服务器启动,等待客户端连接...");
        Socket socket = serverSocket.accept();
        System.out.println("客户端连接成功!");
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String line;
        while ((line = in.readLine()) != null) {
            System.out.println("客户端:" + line);
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
            out.println("你好,客户端!");
        }
        socket.close();
        serverSocket.close();
    }
}

总结

本文从Socket编程基础、客户端-服务器模型和服务器端模型等方面,详细介绍了Java网络编程中的Socket编程技巧。通过学习本文,读者可以轻松掌握Socket编程,为以后进行网络编程打下坚实的基础。