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

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

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

相关文章

  • mac安装navicat破解

    Mac安装Navicat破解 Navicat是一款非常流行的数据库管理工具,但是它是付费软件。如果你想要免费使用Navicat,那么你可以安装破解版的Navicat,本文将介绍如何在Mac上安装Navicat并破解它。 准备工作 使用Navicat需要安装Java环境,如果你没有安装Java环境,请先到官网下载并安装Java。 另外,如果你已经安装了Navi…

    其他 2023年3月28日
    00
  • python爬虫基础之urllib的使用

    Python爬虫基础之urllib的使用 什么是urllib urllib是Python自带的一个HTTP库,包含了一系列用于处理URL的模块。使用urllib可以构建HTTP请求、获取响应结果、编码URL等。 安装urllib urllib是Python自带的库,安装Python即可使用。 urllib的模块 urllib.request: 用于构建HTT…

    other 2023年6月26日
    00
  • jquery预加载图片的方法

    jQuery预加载图片的方法通常是指在页面加载完成之前,提前加载网页中需要使用的所有图片资源,优化用户体验,减少页面的等待时间。下面是详细的攻略: 一、使用jQuery预加载图片的基本步骤 创建一个数组,用于存放页面需要加载的图片资源的地址; 使用$(“<img/>”)动态创建一个图片对象,将其src属性设置为需要预加载的图片地址; 在图片对象的…

    other 2023年6月25日
    00
  • Win11中文文件资源管理器体验:全新右键菜单,快速切换视图

    以下是关于“Win11中文文件资源管理器体验:全新右键菜单,快速切换视图”的完整攻略: Win11中文文件资源管理器体验 Win11的新版文件资源管理器是许多用户期待的一个特性。在Win11中,文件资源管理器经历了一些变化,包括全新的右键菜单和快速切换视图功能。这些新特性能够让用户更高效地管理和浏览文件。 全新右键菜单 在Win11中,文件资源管理器的右键菜…

    other 2023年6月27日
    00
  • 微软:Windows 10开发者工具将随新版本获得更新

    标题:微软宣布更新Windows 10开发者工具 微软最近宣布,Windows 10开发者工具将会在新版本中获得更新,这些更新将会在未来几个月内发布。这些更新将会提高开发者的效率,从而使其更容易开发高质量的Windows应用程序。 更新的内容 更新的内容包括以下几个方面: 改进并提高了Visual Studio和Visual Studio Code Visu…

    other 2023年6月26日
    00
  • 基于java中反射的总结分析

    下面我将为您详细讲解“基于Java中反射的总结分析”的完整攻略。 简介 反射是 Java 中一项非常重要的特性,它允许程序运行时动态地获取类的信息、调用对象的方法、访问或修改对象的属性等。反射可以使程序更加灵活,但同时也增加了代码的复杂性,因此在使用反射时需要特别小心。 反射的使用 获取类的信息 在 Java 中,可以通过以下方法获取类的信息: Class&…

    other 2023年6月27日
    00
  • 如何在mac中修改环境变量path

    当我们在Mac中需要使用一些系统级别的命令或者工具时,需要修改环境变量来确保它们能够顺利的运行。其中最常见的是修改环境变量PATH,下面是在Mac中修改PATH环境变量的完整攻略及示例。 步骤1. 打开Terminal 在Mac系统中,我们可以使用Terminal命令来进行终端操作,通过按下“Command + Space”键,然后在spotlight上输入…

    other 2023年6月27日
    00
  • cygwin 在windows下使用linux命令的方法

    Cygwin 在 Windows 下使用 Linux 命令的方法 Cygwin 是一个为 Windows 系统开发的类 Unix 系统。它提供了很多 Unix/Linux 系统下常用的命令和工具,让 Windows 用户能够使用与 Linux 相似的工具来进行开发。下面是使用 Cygwin 在 Windows 下使用 Linux 命令的方法: 1. 安装 C…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部