java Tcp通信客户端与服务器端实例

Java Tcp通信是一种基于TCP协议的客户端与服务器端的通信方式。Java语言中提供了相应的API,可以方便地进行TCP通信。本文将详细介绍Java Tcp通信的使用方法,并提供两个简单的示例。

1. Java Tcp通信的基本概念

Java Tcp通信需要了解以下基本概念:

  • 服务器端:提供服务程序的一方。服务器程序具有独立运行的能力,等待客户端的连接请求。
  • 客户端:请求服务程序的一方。客户端程序需要通过网络连接到服务器程序,并发送请求获取服务。
  • 端口号:用于标识通信端口的数字。

2. Java Tcp通信的基本步骤

Java Tcp通信的基本步骤如下:

2.1 创建服务器端程序

  • 创建一个ServerSocket对象,并指定端口号。
  • 调用ServerSocket对象的accept()方法,等待客户端的连接请求。
  • 如果有客户端连接请求,accept()方法会返回一个Socket对象,可以通过Socket对象获取到客户端的输入流和输出流。

2.2 创建客户端程序

  • 创建一个Socket对象,并指定服务器的主机名和端口号。
  • 通过Socket对象获取到服务器的输入流和输出流,可以通过输出流向服务器发送请求,通过输入流获取到服务器的响应。

2.3 进行通信

  • 客户端向服务器发送请求。
  • 服务器接收到请求后,处理请求并返回响应。
  • 客户端接收到响应后,进行处理。

3. Java Tcp通信示例

以下是两个Java Tcp通信的简单示例:

3.1 服务器端示例

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

public class TcpServerExample {
    public static void main(String[] args) throws IOException {
        // 创建ServerSocket对象,并指定端口号
        int port = 8888;
        ServerSocket serverSocket = new ServerSocket(port);

        System.out.println("等待客户端连接...");

        while (true) {
            // 等待客户端连接请求
            Socket socket = serverSocket.accept();

            // 处理连接请求,新建线程处理
            Thread thread = new Thread(new SocketHandler(socket));
            thread.start();
        }
    }
}

class SocketHandler implements Runnable {
    private Socket socket;

    public SocketHandler(Socket socket) {
        this.socket = socket;
    }

    @Override
    public void run() {
        try {
            System.out.println("客户端" + socket.getRemoteSocketAddress() + "已连接");

            // 获取到客户端的输入流和输出流
            InputStream inputStream = socket.getInputStream();
            OutputStream outputStream = socket.getOutputStream();

            // 读取客户端发送的数据,并进行处理
            byte[] buffer = new byte[1024];
            int len;
            while ((len = inputStream.read(buffer)) != -1) {
                String message = new String(buffer, 0, len);
                System.out.println("收到客户端" + socket.getRemoteSocketAddress() + "发送的消息:" + message);

                // 给客户端回应
                outputStream.write("已收到您的消息".getBytes());
                outputStream.flush();
            }

            // 关闭流和Socket
            inputStream.close();
            outputStream.close();
            socket.close();
            System.out.println("客户端" + socket.getRemoteSocketAddress() + "已断开连接");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

3.2 客户端示例

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

public class TcpClientExample {
    public static void main(String[] args) throws IOException {
        // 创建Socket对象,并指定服务器的主机名和端口号
        String hostname = "localhost";
        int port = 8888;
        Socket socket = new Socket(hostname, port);

        System.out.println("已连接到服务器" + socket.getRemoteSocketAddress());

        // 获取到服务器的输入流和输出流
        InputStream inputStream = socket.getInputStream();
        OutputStream outputStream = socket.getOutputStream();

        // 向服务器发送请求
        String request = "您好,服务器!";
        outputStream.write(request.getBytes());
        outputStream.flush();
        System.out.println("向服务器发送请求:" + request);

        // 读取服务器的响应
        byte[] buffer = new byte[1024];
        int len;
        while((len = inputStream.read(buffer)) != -1) {
            String response = new String(buffer, 0, len);
            System.out.println("收到服务器的响应:" + response);
        }

        // 关闭流和Socket
        inputStream.close();
        outputStream.close();
        socket.close();
        System.out.println("已断开与服务器的连接");
    }
}

以上就是Java Tcp通信客户端与服务器端实例的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java Tcp通信客户端与服务器端实例 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 输入npm run xxx后执行原理深入解析

    输入npm run xxx后执行原理深入解析 1. npm run xxx的作用 npm run xxx是用来执行在项目package.json文件中scripts字段中定义的脚本命令xxx。 例如在package.json文件中,定义了以下脚本: "scripts": { "start": "node ap…

    Vue 2023年5月28日
    00
  • Vue格式化数据后切换页面出现NaN问题及解决

    Vue格式化数据后切换页面出现NaN问题是一个常见的问题,这通常是由于数据类型不一致造成的。下面将为大家提供一份完整的攻略,帮助大家解决这个问题。 问题描述 在Vue中,你可能会遇到这样的情况:你在页面初始化时通过某种方式将数据格式化,但是当你切换页面时,你会发现数据变成了NaN。这是一个非常困扰人的问题,但是却很容易解决。 解决方案 1. 数据类型判断与转…

    Vue 2023年5月27日
    00
  • vue3 使用setup语法糖实现分类管理功能

    让我来详细讲解一下“vue3 使用setup语法糖实现分类管理功能”的完整攻略。 1. 环境准备 首先,我们需要完成一些准备工作: 安装最新版本的Vue CLI命令行工具 配置VSCode的插件Vetur,以获得更好的vue代码编辑体验 创建一个新的vue3项目。 2. 配置路由 在Vue项目中,我们需要先配置路由,才能实现不同页面之间的跳转。我们使用Vue…

    Vue 2023年5月27日
    00
  • 总结vue映射的方法与混入的使用过程

    Vue.js 是一个流行的前端框架,拥有方便的数据响应式系统和丰富的生命周期。Vue.js 不仅提供了一种方便的组件方式来搭建界面,还提供了许多简化代码的特性,如映射和混入。 Vue映射 什么是映射? Vue映射是一种用于将Vue组件的属性或方法映射到另一个对象的技术。这样做的主要目的是为了方便组件与外界进行交互和相互配合。 映射使用方法 Vue的映射方法包…

    Vue 2023年5月28日
    00
  • 详解SpringMVC如何进行数据回显

    下面是关于“详解SpringMVC如何进行数据回显”的完整攻略。 一、什么是数据回显 在Web开发中,数据回显是指当出现表单提交后,由于某些原因(如数据验证未通过,数据存储出错等)导致当前页面跳转到另一个页面后,原本用户已经填写的数据丢失,需要重新填写。为了减少用户的操作负担,需要将用户已经填写的数据重新显示回表单中,这就是数据回显。 二、SpringMVC…

    Vue 2023年5月28日
    00
  • Vue.js实现大屏数字滚动翻转效果

    Vue.js实现大屏数字滚动翻转效果攻略 什么是大屏数字滚动翻转效果 大屏数字滚动翻转效果是指在Web页面中,通过JavaScript实现数字滚动翻转效果,使数字在变化的过程中呈现出一种动态的翻转效果。这种效果常用于数字展示类页面,如实时数据监控页面、股票行情展示页面等。 如何使用Vue.js实现大屏数字滚动翻转效果 在Vue.js中,我们可以通过以下步骤实…

    Vue 2023年5月27日
    00
  • axios中post请求json和application/x-www-form-urlencoded详解

    Axios中POST请求JSON和application/x-www-form-urlencoded详解 什么是POST请求? POST请求是HTTP协议中的一种请求方式,在请求体中携带需要传输的数据。可能被用于编辑、更新、上传等操作。POST请求方式相对于GET请求方式来说,更加安全和灵活,所以在实际开发中被广泛使用。 axios中POST请求的两种方式 …

    Vue 2023年5月27日
    00
  • vue 3.0 使用ref获取dom元素的示例

    使用 ref 获取 DOM 元素是 Vue.js 3.0 新增的功能。下面是使用 ref 获取 DOM 元素的示例: 1. 在模板中使用 ref 在模板中使用 ref 可以方便地获取 DOM 元素及组件实例。下面是一个简单的示例,用于获取一个输入框 (<input>): <template> <div> <input…

    Vue 2023年5月29日
    00
合作推广
合作推广
分享本页
返回顶部