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日

相关文章

  • springBoot 项目排除数据库启动方式

    如果我们在开发Spring Boot项目时,不需要启动数据库或者采用其他方式连接数据库,可以进行一些排除操作,以提高项目的启动速度。下面详细介绍用Maven 和 Gradle两种方式排除启动数据库。 Maven方式 在Maven中排除数据库启动可以通过在pom.xml配置文件中添加如下代码进行排除。 <dependency> <groupI…

    Java 2023年6月16日
    00
  • 详解Spring Boot实战之Restful API的构建

    详解SpringBoot实战之RestfulAPI的构建攻略 介绍 本文将详细介绍如何使用Spring Boot构建一个带有Restful API的Web应用,并以具体示例来说明其中的细节和注意事项。 环境准备 在开始前,请确保已经安装好以下环境:- JDK 8或以上版本- Maven 3.x或以上版本- IDEA或其他Java IDE 创建新项目 首先,我…

    Java 2023年5月15日
    00
  • 什么是Java安全管理?

    Java安全管理是Java平台提供的一种安全机制,它通过Java安全管理器对Java运行时环境中进行的一些非安全操作进行控制,从而保障Java运行时环境的安全性。 Java安全管理器通过策略文件来指定Java运行时环境中允许执行的权限,从而对Java运行时环境进行安全控制。Java安全管理的使用可以分为以下步骤: 创建策略文件 策略文件必须是一个文本文件,它…

    Java 2023年5月11日
    00
  • Spring Boot 应用的热部署配置方法

    Spring Boot应用的热部署配置方法 在开发Spring Boot应用程序时,我们需要频繁地修改代码并重新编译,这会浪费很多时间。为了提高开发效率,我们可以使用热部署来避免频繁的重启应用程序。本文将详细讲解如何在Spring Boot应用程序中配置热部署。 步骤一:添加依赖 我们需要在pom.xml文件中添加Spring Boot DevTools的依…

    Java 2023年5月15日
    00
  • Java中String的JdbcTemplate连接SQLServer数据库的方法

    下面是详细讲解如何使用JdbcTemplate连接SQLServer数据库的方法的完整攻略: 第一步:导入JDBC驱动 要使用JdbcTemplate连接SQLServer数据库,需要先导入JDBC驱动。在Maven项目中,可以在pom.xml文件中加入以下依赖: <dependency> <groupId>com.microsoft…

    Java 2023年5月20日
    00
  • SpringMVC实现文件上传和下载功能

    SpringMVC实现文件上传和下载功能 Spring MVC提供了很好的机制来实现文件上传和下载功能,但需要借助一些依赖包和配置设置。 1. 添加MultipartResolver Bean 在Spring MVC应用中,我们需要添加一个MultipartResolver Bean以处理文件上传的请求。MultipartResolver 接口定义了文件上传…

    Java 2023年6月15日
    00
  • Java C++算法题解leetcode1592重新排列单词间的空格

    首先,我们需要明确题目的要求:将字符串中单词之间的空格重新排列,使得单词之间只有一个空格,同时字符串的首尾不含空格。 其次,我们需要分析和解决这个问题。首先,我们需要将原字符串按照空格分割成单词,然后将单词之间的空格删除或替换成一个空格,最后将字符串首尾空格删除即可。 以下是具体的代码解决方案: public String reorderSpaces(Str…

    Java 2023年5月19日
    00
  • springboot整合shiro多验证登录功能的实现(账号密码登录和使用手机验证码登录)

    SpringBoot整合Shiro多验证登录功能的实现 SpringBoot是一个快速开发Spring应用的框架,而Shiro可以方便的实现安全认证和授权,两者结合,可以非常方便的实现多验证登录功能。 SpringBoot集成Shiro 首先需要添加Shiro和SpringBoot的依赖。 <dependency> <groupId>…

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