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

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协议的客户端与服务器之间的通信了。

阅读剩余 57%

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

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

相关文章

  • 64位下无法运行32位程序的解决方法 提示未指定提供程序,也没有指派的默认提供程序

    64位下无法运行32位程序的解决方法 在64位操作系统下,有时候会遇到无法运行32位程序的问题。这通常是因为缺少32位程序所需的运行环境或者配置不正确。下面是解决这个问题的完整攻略。 步骤一:安装32位运行环境 首先,你需要安装32位运行环境,以便能够在64位操作系统上运行32位程序。具体的步骤如下: 打开控制面板,点击\”程序\”或\”程序和功能\”。 在…

    other 2023年7月28日
    00
  • PyCharm无代码提示解决方案

    当我们在使用 PyCharm 编写 Python 代码时,常常会遇到无法正常显示代码提示的情况。这时候没有代码提示,我们想要写出正确的代码会比较困难,尤其是在试图使用第三方库时。下面是实现 PyCharm 无代码提示的解决方案: 1. 确认 PyCharm 是否正确配置 首先需要在 PyCharm 的设置中检查 Python 解释器是否正确配置。在打开 Py…

    other 2023年6月26日
    00
  • Bandizip在哪查看版本号?Bandizip查看版本号教程

    Bandizip版本号查看攻略 Bandizip是一款流行的压缩软件,如果你想查看Bandizip的版本号,可以按照以下步骤进行操作: 打开Bandizip软件:在你的电脑上找到并双击打开Bandizip软件。 导航到“帮助”菜单:在Bandizip的主界面上,你会看到一个菜单栏。点击菜单栏上的“帮助”选项。 查看版本号:在“帮助”菜单下拉列表中,你会看到一…

    other 2023年8月3日
    00
  • shell 提取文件名和目录名的方法实现

    当我们需要对文件进行操作时,我们通常需要知道文件名和目录名。在shell脚本中,提取文件名和目录名是一项很常见的任务。下面是详细讲解“shell提取文件名和目录名的方法实现”的攻略: 1.提取文件名 我们可以使用基于参数替换的方法来提取文件名。具体方法如下: 使用$去掉文件路径中最后一个‘/’之前的内容,保留最后一个‘/’之后的文件名部分即可。 例如: $ …

    other 2023年6月26日
    00
  • IIS 7.0 部署MVC

    IIS 7.0 部署MVC 在使用ASP.NET MVC架构开发Web应用程序时,最关键的部分之一就是程序的部署。本文将介绍如何在IIS 7.0上部署MVC应用程序。 准备工作 在开始部署之前,需要确保以下环境已经准备就绪: IIS 7.0已安装 ASP.NET MVC运行时已安装 部署包已生成 操作步骤 将部署包文件复制到Web服务器上的特定目录中,例如”…

    其他 2023年3月28日
    00
  • 详解c语言中的 strcpy和strncpy字符串函数使用

    绝大部分的 C 程序都有与字符串处理相关的任务,strcpy 和 strncpy 就是 C 语言中两个最为常用的字符串函数。本文将详细讲解这两个函数的使用,以及它们之间的差异,希望能对初学者有所帮助。 一、strcpy 函数 1.1 函数原型 char *strcpy(char *dest, const char *src); 1.2 函数含义 strcpy…

    other 2023年6月20日
    00
  • js实现随机8位验证码

    当然!下面是关于\”js实现随机8位验证码\”的完整攻略: js实现随机8位验证码 在JavaScript中,可以使用随机数和字符串操作来生成随机8位验证码。以下是两个示例: 示例1:使用Math.random()生成随机数 function generateCode() { var code = ”; var characters = ‘ABCDEFGH…

    other 2023年8月19日
    00
  • 自制小工具大大加速mysqlsql语句优化(附源码)

    自制小工具大大加速MySQL语句优化(附源码) MySQL是一个非常流行的关系型数据库,但是随着数据量的增加,优化MySQL查询语句也变得越来越重要。本文将介绍一款自制小工具,可以帮助您更快速地进行MySQL语句优化。 背景介绍 在工作中,我们常常需要对全表进行数据查询操作,当数据量较大时,查询速度会变得非常慢。而优化MySQL语句可以大大提高查询速度,但是…

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