Java 中使用 Socket 类来实现网络通讯,可以通过 Socket 类的 send 和 receive 方法实现数据传送。我们可以通过以下步骤来实现 Socket 类的数据发送和接收:
Java 中使用 Socket 类来实现网络通讯,可以通过 Socket 类的 send 和 receive 方法实现数据传送。我们可以通过以下步骤来实现 Socket 类的数据发送和接收:
- 创建 Socket 实例并连接服务器
在使用 Socket 类实现数据传输前,需要先创建 Socket 实例。通过传入目标主机和端口号作为参数,我们可以实现与目标主机的连接。
Socket socket = new Socket("localhost", 8080);
- 发送数据
创建 Socket 实例后,我们可以使用其 OutputStream 对象的 write 方法发送数据。write 方法允许我们传入字节数组作为参数以发送数据。
String message = "Hello World";
byte[] data = message.getBytes();
OutputStream outputStream = socket.getOutputStream();
outputStream.write(data);
- 接收数据
通过 Socket 的 InputStream 对象,我们可以使用 receive 方法接收数据。receive 方法将阻塞程序直到数据到达素材无论。一旦接收到数据,我们将获得一个字节数组,其中包含数据的所有信息。
InputStream inputStream = socket.getInputStream();
byte[] buffer = new byte[1024];
int bytesRead = inputStream.read(buffer);
- 关闭 Socket 连接
一旦数据传输完成,我们应该关闭当前 Socket 连接来保护我们的程序和网络。
socket.close();
接下来,我们可以通过两个示例来演示如何使用 Socket 类进行数据发送和接收。
- 服务端接收数据
服务器端可以通过 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());
- 客户端发送数据
客户端可以通过 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类接收和发送数据
基础教程推荐
- 详解http请求中的Content-Type 2023-07-31
- java 解决Eclipse挂掉问题的方法 2024-01-10
- 用javascript制作qq注册动态页面 2023-12-16
- JSP servlet实现文件上传下载和删除 2023-07-30
- SpringBoot 2.5.5整合轻量级的分布式日志标记追踪神器TLog的详细过程 2023-06-17
- 关于@MapperScan包扫描的坑及解决 2023-04-16
- SpringBoot嵌入式Web容器原理与使用介绍 2023-06-17
- Spring MVC数据绑定方式 2023-06-30
- springboot中request和response的加解密实现代码 2022-12-08
- jsp hibernate的分页代码第3/3页 2024-01-11
