当前位置:首页 > Java

java socket如何运行

2026-03-04 04:21:12Java

Java Socket 的基本运行方法

Java Socket 编程基于客户端-服务器模型,通过 java.net 包中的 SocketServerSocket 类实现。以下是实现简单通信的代码示例和说明。

服务器端代码

服务器端使用 ServerSocket 监听指定端口,等待客户端连接:

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

public class Server {
    public static void main(String[] args) throws IOException {
        int port = 12345;
        ServerSocket serverSocket = new ServerSocket(port);
        System.out.println("服务器启动,等待客户端连接...");

        Socket clientSocket = serverSocket.accept();
        System.out.println("客户端已连接");

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

        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            System.out.println("收到客户端消息: " + inputLine);
            out.println("服务器回复: " + inputLine);
        }

        in.close();
        out.close();
        clientSocket.close();
        serverSocket.close();
    }
}

客户端代码

客户端通过 Socket 连接到服务器并发送消息:

java socket如何运行

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

public class Client {
    public static void main(String[] args) throws IOException {
        String host = "localhost";
        int port = 12345;

        Socket socket = new Socket(host, port);
        PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
        BufferedReader in = new BufferedReader(
            new InputStreamReader(socket.getInputStream())
        );
        BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));

        String userInput;
        while ((userInput = stdIn.readLine()) != null) {
            out.println(userInput);
            System.out.println("服务器回复: " + in.readLine());
        }

        out.close();
        in.close();
        stdIn.close();
        socket.close();
    }
}

运行步骤

  1. 编译服务器端和客户端代码:
    javac Server.java
    javac Client.java
  2. 先运行服务器端程序:
    java Server
  3. 再运行客户端程序:
    java Client

关键点说明

  • ServerSocket 用于服务器端绑定端口并监听连接。
  • Socket 用于建立客户端与服务器的连接,或服务器接受客户端连接。
  • BufferedReaderPrintWriter 用于处理输入输出流。
  • 通信完成后需关闭所有资源以避免内存泄漏。

扩展功能

  • 多线程处理:服务器端可以为每个客户端连接创建独立线程。
  • 异常处理:添加 try-catch 块处理网络异常。
  • 数据序列化:通过 ObjectInputStreamObjectOutputStream 传输对象。

标签: javasocket
分享给朋友:

相关文章

java如何创建类

java如何创建类

创建类的基本语法 在Java中,类通过class关键字定义,语法如下: [访问修饰符] class 类名 { // 成员变量(属性) // 构造方法 // 成员方法 }…

java如何输出数组

java如何输出数组

输出数组的方法 在Java中,输出数组内容有多种方式,具体取决于数组类型和输出格式需求。以下是几种常见的方法: 使用Arrays.toString()方法 适用于一维数组,直接调用Arrays.to…

java如何配置环境变量

java如何配置环境变量

配置Java环境变量的方法 下载并安装JDK 从Oracle官网或OpenJDK下载适合操作系统的JDK安装包。运行安装程序并按照提示完成安装,记下JDK的安装路径(例如C:\Program File…

java如何创建项目

java如何创建项目

使用IDE创建Java项目(以IntelliJ IDEA为例) 打开IntelliJ IDEA,选择“New Project”。 在左侧菜单中选择“Java”,确保已配置JDK(若无需手动添加)。 勾…

如何导入java项目

如何导入java项目

导入Java项目的方法 使用IDE导入(如IntelliJ IDEA或Eclipse) 打开IDE后选择导入现有项目,导航至项目根目录(包含pom.xml或build.gradle的文件位置)。IDE…

如何学习java语言

如何学习java语言

学习Java语言的系统方法 理解基础概念 Java是一种面向对象的编程语言,掌握基础概念如变量、数据类型、运算符、控制流语句(if-else、循环)是第一步。熟悉类和对象的概念,理解封装、继承和多态三…