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类接收和发送数据 - Python技术站