Java网络编程基础篇之单向通信 原创

当我们开展Java网络编程时,我们首先需要了解的是基础的单向通信。

单向通信是指通信流只能在一条路径上单向发送的通信模式。例如,服务器发送数据到客户端,而客户端不能发送数据回服务器。在 Java 中,单向通信可以通过 Socket 和 ServerSocket 实现。

以下是实现单向通信的步骤:

  1. 创建一个ServerSocket对象,使用一个门牌号绑定到一个本地端口上:
ServerSocket serverSocket = new ServerSocket(portNumber);
  1. 你可以调用 accept() 方法,这将阻塞线程并等待来自客户端的连接:
Socket clientSocket = serverSocket.accept();
  1. 当连接成功后,你就可以从客户端Socket对象中读取数据:
InputStream input = clientSocket.getInputStream();
  1. 为了将数据发送给客户端,可以创建一个 OutputStream 对象:
OutputStream output = clientSocket.getOutputStream();
  1. 最后,确保在结束时关闭服务器Socket和客户端Socket:
clientSocket.close();
serverSocket.close();

这是一个简单的示例,演示了如何在Java中创建一个可接受客户端连接的简单服务器:

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

public class SimpleServer {

    public static void main(String[] args) throws IOException {

        int portNumber = 1234;
        ServerSocket serverSocket = new ServerSocket(portNumber);
        Socket clientSocket = serverSocket.accept();
        InputStream input = clientSocket.getInputStream();
        OutputStream output = clientSocket.getOutputStream();

        BufferedReader reader = new BufferedReader(new InputStreamReader(input));
        PrintWriter writer = new PrintWriter(output, true);

        String line;
        while ((line = reader.readLine()) != null) {
            writer.println(line);
        }

        clientSocket.close();
        serverSocket.close();
    }
}

这是一个从客户端向服务器发送数据的示例:

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

public class SimpleClient {

    public static void main(String[] args) throws IOException {

        String hostName = "localhost";
        int portNumber = 1234;

        try (
            Socket clientSocket = new Socket(hostName, portNumber);
            PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
            BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in))
        ) {
            String userInput;
            while ((userInput = stdIn.readLine()) != null) {
                out.println(userInput);
                System.out.println("echo: " + in.readLine());
            }
        } catch (UnknownHostException e) {
            System.err.println("Don't know about host " + hostName);
            System.exit(1);
        } catch (IOException e) {
            System.err.println("Couldn't get I/O for the connection to " + hostName);
            System.exit(1);
        } 
    }
}

这就是如何在Java中使用单向通信进行基础网络编程的攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java网络编程基础篇之单向通信 原创 - Python技术站

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

相关文章

  • 明日方舟吾导先路商店兑换优先级推荐 吾导先路活动兑换攻略

    明日方舟吾导先路商店兑换优先级推荐 吾导先路活动兑换攻略 1. 活动概述 吾导先路活动是明日方舟游戏中的一个限时活动,玩家可以通过该活动兑换各种珍贵的物品。为了优化兑换物品的效率,以下是活动中兑换物品的优先级推荐。 2. 兑换物品优先级推荐 2.1 最优先兑换物品 在活动商店中有一些物品是非常优先兑换的,这些物品通常是活动中最有价值的,玩家应该优先考虑兑换这…

    other 2023年6月28日
    00
  • Arclive 街机对战平台(单独ROMS下载) 备用下载地址

    Arclive 街机对战平台(单独ROMS下载) 备用下载地址攻略 Arclive 街机对战平台是一个提供街机游戏对战的平台,它允许玩家下载并玩各种经典的街机游戏。以下是详细的攻略,包括如何下载和安装 Arclive 街机对战平台以及如何获取单独的 ROMS 下载地址。 步骤 1:下载和安装 Arclive 街机对战平台 首先,打开您的网络浏览器,并访问 A…

    other 2023年8月4日
    00
  • 基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解

    接下来我会详细讲解一下“基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解”。 什么是对象冒充? 对象冒充是一种通过在子类的构造函数中调用父类构造函数的方式实现继承的方法。这种方式通常适用于子类需要继承父类属性和方法,但不需要继承父类原型中的属性和方法的情况。 如何使用对象冒充? 下面通过一个示例来详细说明如何使用对象冒充: // 定义父类…

    other 2023年6月26日
    00
  • java是什么意思

    Java是什么意思? Java 是一种面向对象编程语言,由Sun公司于1995年研发出来。Java 是一门高级语言,具有平台无关性,能够在任意系统上运行,使用 Java 语言编写的程序可以在不同平台上使用。 Java的优点 Java 语言因其跨平台性、易学易用、高效性、安全性等优点被广泛应用于开发网络应用程序、企业级应用系统及移动应用等。 以下是Java的一…

    其他 2023年4月16日
    00
  • 全能vip音乐在线解析

    全能VIP音乐在线解析 作为音乐爱好者,相信大家都遇到过这样的情况,想要下载一首自己喜欢的歌曲,却发现下载链接失效或是需要付费才能下载,这时候我们就需要一个好用的音乐在线解析工具。 全能VIP音乐在线解析是一个强大的在线工具,可以解析各大音乐平台的VIP歌曲,让你轻松听到高品质的音乐。以下是该工具的使用方法: 步骤一:找到要解析的VIP链接 首先,我们需要找…

    其他 2023年3月28日
    00
  • 酷派大神开发者选项在哪里 酷派大神f1开启开发者选项方法

    酷派大神开发者选项在哪里? 酷派大神开发者选项是一个非常重要的设置,它可以让你在开发和调试应用时更加方便。下面我将详细介绍开启酷派大神开发者选项的方法。 打开设置菜单 首先,打开你的酷派大神手机,进入设置菜单。 找到“关于手机”选项 在设置菜单中,你需要找到“关于手机”选项。这通常是在菜单的最底部。点击“关于手机”。 找到“版本号”选项 在“关于手机”菜单中…

    other 2023年6月26日
    00
  • 正则表达式之字符串模式匹配实例详解

    正则表达式之字符串模式匹配实例详解 正则表达式是一种用特殊符号配对模式的方法,可用于字符串匹配、数据替换等操作。本文将详细讲解正则表达式在字符串模式匹配中的应用。 正则表达式基础 正则表达式使用一些特殊字符表示要匹配的模式,如下: 字符 描述 . 匹配除换行符以外的任意一个字符 * 匹配零个或多个紧随它的表达式 + 匹配一个或多个紧随它的表达式 ? 匹配零个…

    other 2023年6月20日
    00
  • 【ruby】ruby安装

    以下是关于“【Ruby】Ruby安装”的完整攻略,包括基本概念、安装方法和两个示例。 基本概念 Ruby是一种面向对象的动态编程语言,具有简单、易、高效、灵活等特点,被广泛应用于Web开发、系统管理、数据处理等领域。在安装Ruby之前,需要先安装Ruby的运行环境,即Ruby解释器。 安装方法 以下是在不同操作系统上安装的方法: 在Windows上安装Rub…

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