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日

相关文章

  • javascript实现图片预加载和懒加载

    下面是详细的“JavaScript实现图片预加载和懒加载”的攻略教程。 一、图片预加载 1.1 概述 图片预加载是指在页面加载时,提前将需要用到的图片资源加载到缓存中,等到需要显示时再从缓存中获取,以此提高页面的加载速度和用户体验。 1.2 实现方法 1.2.1 使用Image对象 使用Image对象的onload事件,可以在图片加载完成后执行相应的操作。 …

    other 2023年6月25日
    00
  • 使用top命令分析linux系统性能的详解

    使用top命令分析linux系统性能的详解 在Linux系统中,top是最常用的性能监控命令之一。它可以实时显示系统资源的使用情况,包括CPU、内存、进程等。下面是使用top命令分析Linux系统性能的详解。 使用top命令 在Linux系统中,可以通过以下命令打开top: top 或者 top -d <秒数> 其中,-d参数指定top命令的更新…

    other 2023年6月27日
    00
  • eclipse常用配置

    以下是关于如何配置Eclipse的完整攻略,包括常用配置和两个示例说明。 常用配置 1. 设置编码 在Eclipse中,我们可以设置编码来确保我们的代码能正确地显示和运行。以下是设置编码的步骤: 打开Eclipse,选择“Window”菜单,然后选择“Preferences”。 在弹出的对话框中,选择“General” -> “Workspace”。 …

    other 2023年5月9日
    00
  • 批处理中Copy与Xcopy命令的区别小结

    下面是“批处理中Copy与Xcopy命令的区别小结”的完整攻略。 前言 在批处理中,复制文件是我们常见的操作之一。我们通常会用到两个命令,分别是Copy和Xcopy。这两个命令虽然都可以进行复制操作,但实际上有一些区别。在本文中,我们将对这两个命令做一个小结,让大家更好的理解它们之间的区别。 Copy命令 Copy命令是最基本的复制命令,可以用来将一个或多个…

    other 2023年6月26日
    00
  • Outlook邮件配置帐号经常遇到的问题汇总

    Outlook邮件配置帐号经常遇到的问题汇总 在使用Outlook配置邮件帐号时,经常会遇到各种问题,如无法接收邮件、无法发送邮件、密码错误等。下面将汇总常见问题及其解决办法。 问题一:无法接收邮件 如果无法接收邮件,可能是以下原因之一: 1. POP3或IMAP端口设置错误 在Outlook设置账户时,要确保选择了正确的邮件协议和端口。常用的POP3协议端…

    other 2023年6月27日
    00
  • Podman开机自启容器实现过程及与Docker对比

    Podman开机自启容器实现过程及与Docker对比 1. 前言 Podman 是一个轻量级的容器运行时,具有易用性和安全性等优点。与 Docker 不同的是,它不需要守护进程,并且使用 UID 映射来管理容器中的用户权限。本文将详细讲解 Podman 如何实现开机自启容器,并与 Docker 进行对比。 2. 安装 Podman 如果你还没有安装 Podm…

    other 2023年6月27日
    00
  • Onenote笔记本怎么添加加载项?

    当你使用OneNote软件的时候,你可能需要添加一些加载项来增加工作的效率和便利性。本文将为你详细讲解如何添加Onenote笔记本加载项。 步骤一:打开Onenote软件 首先,你需要从你的计算机上打开Onenote软件。 步骤二:找到“文件”选项 在Onenote的主界面上,你可以看到一个名为“文件”的选项。 步骤三:选择“选项” 在“文件”选项下,你可以…

    other 2023年6月25日
    00
  • jquery绑定input的change事件

    jQuery绑定input的change事件 在Web开发中,我们经常需要使用jQuery绑定input的change事件,以便在输入框内容发生变化时执行一些操作。以下是jQuery绑定input的change事件的完整攻略。 步骤 以下是jQuery绑定input的change事件的步骤: 使用jQuery选择器选择要绑定change事件的input元素。…

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