Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java tcp/ip socket编程

作者:旭旭移日   发布日期:2025-03-27   浏览:93

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

public class TCPServer {
    public static void main(String[] args) {
        ServerSocket serverSocket = null;
        try {
            // 创建一个服务器套接字,并绑定到指定端口(例如1234)
            serverSocket = new ServerSocket(1234);
            System.out.println("Server started. Listening on port 1234");

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

                // 获取输入输出流
                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("Received: " + inputLine);
                    // 回显消息给客户端
                    out.println("Echo: " + inputLine);
                }

                // 关闭资源
                in.close();
                out.close();
                clientSocket.close();
            }
        } catch (IOException e) {
            System.err.println("Exception caught when trying to listen on port 1234 or listening for a connection");
            System.err.println(e.getMessage());
        } finally {
            if (serverSocket != null && !serverSocket.isClosed()) {
                try {
                    serverSocket.close();
                } catch (IOException e) {
                    System.err.println("Could not close server socket");
                    System.err.println(e.getMessage());
                }
            }
        }
    }
}

public class TCPClient {
    public static void main(String[] args) {
        Socket socket = null;
        try {
            // 连接到服务器(假设服务器在同一台机器上,使用localhost)
            socket = new Socket("localhost", 1234);
            System.out.println("Connected to server");

            // 获取输入输出流
            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("Echo from server: " + in.readLine());
            }
        } catch (UnknownHostException e) {
            System.err.println("Don't know about host");
            System.exit(1);
        } catch (IOException e) {
            System.err.println("Couldn't get I/O for the connection to localhost");
            System.exit(1);
        } finally {
            if (socket != null && !socket.isClosed()) {
                try {
                    socket.close();
                } catch (IOException e) {
                    System.err.println("Could not close client socket");
                    System.err.println(e.getMessage());
                }
            }
        }
    }
}

解释说明

  1. TCPServer 类:

    • 创建一个 ServerSocket 对象并绑定到指定端口(如1234),开始监听来自客户端的连接请求。
    • 使用 accept() 方法等待客户端连接。一旦有客户端连接,创建一个新的 Socket 对象来处理通信。
    • 使用 BufferedReaderPrintWriter 分别读取和写入数据。
    • 读取客户端发送的消息并将其回显给客户端。
    • 处理完一次连接后关闭相应的输入输出流和 Socket
  2. TCPClient 类:

    • 创建一个 Socket 对象并连接到服务器(假设服务器在同一台机器上,使用 localhost)。
    • 使用 PrintWriterBufferedReader 分别发送和接收消息。
    • 从标准输入读取用户输入的消息并发送给服务器,然后读取服务器回显的消息并打印出来。
    • 完成通信后关闭 Socket

以上代码展示了如何使用 Java 实现简单的 TCP/IP 套接字编程,包括服务器端和客户端的基本功能。

上一篇:java获取服务器ip

下一篇:java int 转 string

大家都在看

java连接数据库的代码

ubuntu 卸载java

java sort用法

java collections.sort

java file类的方法

java 判断

java时间数据类型

java 时间加一天

java demo

java 截取

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站