Java利用TCP协议实现客户端与服务器通信(附通信源码)

yizhihongxing

Java利用TCP协议实现客户端与服务器通信攻略

前言

在Java中实现TCP协议的客户端和服务器之间的通信,可以借助于Java中提供的Socket和ServerSocket类。其中,Socket类实现客户端的创建,ServerSocket类实现服务器的创建。本篇文档将详细讲解如何利用Java实现TCP协议的客户端与服务器之间的通信。

步骤

Java实现TCP协议的客户端与服务器之间的通信的步骤如下:

  1. 服务器端创建一个ServerSocket对象,并指定端口号;
  2. 服务器调用ServerSocket对象的accept()方法来监听客户端的连接请求;
  3. 客户端创建一个Socket对象,并指定服务器的IP地址和端口号;
  4. 客户端调用Socket对象的getInputStream()和getOutputStream()方法获取输入输出流,并利用它们来进行通信;
  5. 服务器调用accept()方法后,返回一个Socket对象,服务器可以通过Socket对象来接收客户端发送的数据;
  6. 客户端调用输出流的write()方法将数据发送给服务器;
  7. 服务器调用输入流的read()方法来读取数据。

下面通过示例来具体说明以上步骤。

示例1

服务器端代码如下:

public class TCPServer {
    public static void main(String[] args) throws IOException {
        ServerSocket ss = new ServerSocket(8888);
        Socket s = ss.accept();
        BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
        String str = br.readLine();
        System.out.println("客户端发送的数据为:" + str);
        ss.close();
    }
}

客户端代码如下:

public class TCPClient {
    public static void main(String[] args) throws IOException {
        Socket s = new Socket("localhost", 8888);
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
        bw.write("Hello, world!");
        bw.flush();
        s.close();
    }
}

以上代码可以实现客户端向服务器发送一条消息,并在服务器端将该消息输出。

示例2

服务器端代码如下:

public class TCPServer {
    public static void main(String[] args) throws IOException {
        ServerSocket ss = new ServerSocket(8888);
        while (true) {
            Socket s = ss.accept();
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
                        String str = br.readLine();
                        System.out.println("客户端发送的数据为:" + str);
                        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
                        bw.write("谢谢连接,再见!");
                        bw.flush();
                        s.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }).start();
        }
    }
}

客户端代码如下:

public class TCPClient {
    public static void main(String[] args) throws IOException {
        Socket s = new Socket("localhost", 8888);
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
        bw.write("Hello, world!");
        bw.flush();
        BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
        String str = br.readLine();
        System.out.println("服务器响应的数据为:" + str);
        s.close();
    }
}

以上代码可以实现客户端向服务器发送一条消息,服务器将该消息输出,并向客户端发送一条响应。客户端收到响应后将其输出。

结尾

以上就是Java实现TCP协议的客户端与服务器之间的通信攻略。通过以上示例,相信大家已经能够熟练掌握如何利用Java实现TCP协议的客户端与服务器之间的通信了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java利用TCP协议实现客户端与服务器通信(附通信源码) - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 海量数据Excel报表利器——EasyExcel(开场篇)

    海量数据Excel报表利器——EasyExcel(开场篇) Excel作为办公软件的代表,已经成为处理数据、制作报表的必备工具之一。但随着数据量的不断增大,Excel的限制和不足逐渐变得显露出来,如数据处理速度过慢、文件大小限制等问题逐渐变得引人注目。而一款名叫EasyExcel的Java开源框架,正是为了解决Excel在处理海量数据时遇到的种种问题而诞生。…

    其他 2023年3月28日
    00
  • 三个方法生成python的exe文件

    三个方法生成Python的exe文件 Python是一种高级编程语言,用于快速开发各种应用程序。许多开发人员喜欢使用Python编写他们的应用程序,甚至是Windows应用程序,但要将Python代码转换为Windows应用程序,最好的方法是将其转换为可执行的.EXE文件。在本文中,我们将讨论三种方法,以便您可以快速,简便地将Python脚本转换为.EXE文…

    其他 2023年3月28日
    00
  • Android异步加载数据和图片的保存思路详解

    当在Android应用中需要异步加载数据和保存图片时,可以采用以下思路: 异步加载数据: 使用AsyncTask类或Thread类来执行异步任务。这些类可以在后台线程中执行耗时操作,以避免阻塞主线程。 在doInBackground方法中执行耗时操作,例如从网络获取数据。 在onPostExecute方法中处理加载完成后的数据,例如更新UI界面。 以下是一个…

    other 2023年10月13日
    00
  • 深入了解Java中的类加载机制

    深入了解Java中的类加载机制 1. Java类加载机制概述 Java类加载机制是Java虚拟机(JVM)的一个重要组成部分,负责将.class文件中的字节码加载到JVM内存中,并转换为可执行的Java对象。对于大多数Java开发者来说,类的加载工作是完全透明的,甚至不需要知道Java中的类加载机制的存在。但是,了解Java的类加载机制对于理解Java应用程…

    other 2023年6月20日
    00
  • windows nfs 服务端安装配置教程

    下面是”Windows NFS 服务端安装配置教程” 的完整攻略,包括安装、配置和示例说明: 一、安装NFS服务端 确保电脑上已经安装好Windows操作系统。 下载NFS服务端安装包。 安装NFS服务端 打开下载的安装包,双击运行安装程序。 点击“下一步”,同意许可协议。 选择需要安装的组件,建议全部安装。 选择安装位置,一般情况下不需要修改。 等待安装完…

    other 2023年6月27日
    00
  • vue 面包屑导航组件封装

    实现 Vue 面包屑导航组件封装的过程中,可以按照如下步骤进行: 第一步:创建面包屑组件 创建面包屑组件 Breadcrumb.vue 文件 在 Breadcrumb.vue 文件中编写模板和样式 在 Breadcrumb.vue 文件中导出 Breadcrumb 组件 以下是 Breadcrumb.vue 文件示例: <template> &l…

    other 2023年6月25日
    00
  • dns优选有什么用?win7系统360dns优选功能作用

    以下是关于“Matlab-Octave/Matlab中的deal()函数有什么意义?”的完整攻略,包括基本概念、用法、示例和注意事项。 基本概念 deal()函数是Matlab-Octave/Matlab中的一个内置函数,用于将输入参数分配给输出变量。它可以将多个输入参数分配给多个输出变量,也可以将一个输入参数分配给多个输出变量。 用法 deal()函数的基…

    other 2023年5月7日
    00
  • ps教程:如何批量处理图片

    PS教程:如何批量处理图片 Photoshop(简称PS)作为一款强大的图像处理工具,为广大用户提供了多种处理图像的功能。在图像处理的过程中,我们经常需要进行批量处理,以提高工作效率。本文将介绍如何使用PS批量处理图片的方法。 1. 批量修改图片尺寸 当我们需要将大量图片的尺寸进行修改时,一个一个打开图片进行修改显然很浪费时间。这时候,我们可以使用PS提供的…

    其他 2023年3月29日
    00
合作推广
合作推广
分享本页
返回顶部