java使用Socket类接收和发送数据

Java 中使用 Socket 类来实现网络通讯,可以通过 Socket 类的 send 和 receive 方法实现数据传送。我们可以通过以下步骤来实现 Socket 类的数据发送和接收:

  1. 创建 Socket 实例并连接服务器

在使用 Socket 类实现数据传输前,需要先创建 Socket 实例。通过传入目标主机和端口号作为参数,我们可以实现与目标主机的连接。

Socket socket = new Socket("localhost", 8080);
  1. 发送数据

创建 Socket 实例后,我们可以使用其 OutputStream 对象的 write 方法发送数据。write 方法允许我们传入字节数组作为参数以发送数据。

String message = "Hello World";
byte[] data = message.getBytes();
OutputStream outputStream = socket.getOutputStream();
outputStream.write(data);
  1. 接收数据

通过 Socket 的 InputStream 对象,我们可以使用 receive 方法接收数据。receive 方法将阻塞程序直到数据到达素材无论。一旦接收到数据,我们将获得一个字节数组,其中包含数据的所有信息。

InputStream inputStream = socket.getInputStream();
byte[] buffer = new byte[1024];
int bytesRead = inputStream.read(buffer);
  1. 关闭 Socket 连接

一旦数据传输完成,我们应该关闭当前 Socket 连接来保护我们的程序和网络。

socket.close();

接下来,我们可以通过两个示例来演示如何使用 Socket 类进行数据发送和接收。

  1. 服务端接收数据

服务器端可以通过 ServerSocket 类进行监听某一端口并接收客户端发送的信息。客户端可以通过调用 Socket 的 send 方法向服务端发送信息。

// 服务端代码

ServerSocket server = new ServerSocket(8000);
Socket socket = server.accept();
InputStream inputStream = socket.getInputStream();
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int n = 0;
byte[] data = new byte[1024];
while ((n = inputStream.read(data)) != -1) {
    buffer.write(data,0,n);
}
socket.close();
server.close();
String result = new String(buffer.toByteArray());
  1. 客户端发送数据

客户端可以通过 Socket 类的方法来向服务端发送请求。

// 客户端代码

Socket socket = new Socket("localhost", 8000);
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
Scanner scanner = new Scanner(System.in);
System.out.println("请输入:");
String input = scanner.nextLine();
outputStream.write(input.getBytes());
byte[] buffer = new byte[1024];
int n = 0;
while ((n = inputStream.read(buffer)) != -1) {
    System.out.println(new String(buffer, 0, n));
}
socket.close();

通过以上两个示例,我们可以了解到如何使用 Socket 类接收和发送数据,以及如何在客户端和服务器端进行通信。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java使用Socket类接收和发送数据 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • 基于Java的Spring框架来操作FreeMarker模板的示例

    基于Java的Spring框架来操作 FreeMarker 模板是一种灵活高效的模板引擎模式。下面是详细的攻略: 1. 安装配置FreeMarker依赖 首先需要在项目中添加 FreeMarker 的 maven 依赖: <dependency> <groupId>org.freemarker</groupId> <…

    Java 2023年6月15日
    00
  • Spring MVC整合Shiro权限控制的方法

    下面是“Spring MVC整合Shiro权限控制的方法”的完整攻略。 一、简介 Shiro是一个开源的安全框架,可以提供认证、授权、加密和会话管理等安全相关功能。Spring MVC是一个流行的Web框架,提供了建立Web应用程序的开发模型和程序依赖管理。本文将介绍如何在Spring MVC中整合Shiro权限控制。 二、整合步骤 1. 引入依赖 首先,在…

    Java 2023年5月20日
    00
  • java中mybatis和hibernate的用法总结

    Java中MyBatis和Hibernate的用法总结 1. MyBatis的用法示例 1.1. 配置MyBatis数据源 在MyBatis中使用数据源需要在项目的配置文件mybatis-config.xml中进行配置。下面以配置MySQL连接为例进行说明。 <!– 配置数据源 –> <dataSource type="POO…

    Java 2023年5月20日
    00
  • java结合HADOOP集群文件上传下载

    Java结合Hadoop集群文件上传下载的攻略如下: 1. 确认Hadoop集群状态 在开始上传或下载文件之前,为了确保集群状态正常,需要使用以下命令检查Hadoop集群是否处于正常状态: hadoop fs -ls / 如果出现Hadoop根目录的内容列表,则表示集群状态正常。 2. 文件上传 方式一:利用Hadoop API上传文件 Java代码示例如下…

    Java 2023年5月31日
    00
  • springcloud~Sentinel

    介绍 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 历史 2012 年,Sentinel 诞生,主要功能为入口流量控制。2013-2017 年,…

    Java 2023年5月5日
    00
  • 使用Spring Boot实现操作数据库的接口的过程

    使用Spring Boot实现操作数据库的接口的过程大致可以分为以下几个步骤: 准备工作:创建一个Spring Boot项目并添加必要的依赖。 配置数据库连接:在application.properties文件中配置数据库的连接信息,如数据库的URL、用户名、密码等。 定义数据模型:创建一个Java类来表示数据库中的数据表,包括表的字段和相关方法。 定义数据…

    Java 2023年5月20日
    00
  • java实现服务器文件打包zip并下载的示例(边打包边下载)

    让我详细讲解“Java实现服务器文件打包zip并下载的示例(边打包边下载)”的完整攻略。 1. 准备工作 在开始操作之前,需要准备以下两件事情: 相应的Java开发环境; 一个Web服务器,如Tomcat。 2. 解压文件并创建Java项目 首先,需要从服务器中解压需要打包的文件。接下来,在Java项目中创建以下文件夹: src/main/java src/…

    Java 2023年5月19日
    00
  • Java Lambda 表达式详解及示例代码

    Java Lambda 表达式详解及示例代码 1. 什么是 Lambda 表达式 Lambda 表达式是 Java 8 中引入的一个新特性,它可以用更简洁的方式来表示某些接口或抽象类的实现。 Lambda 表达式可以看做是匿名函数,它由三个部分组成:参数列表、箭头符号和函数体。它的基本语法如下: (parameter1, parameter2, …) -…

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