下面我会针对“Java Socket实现单线程通信的方法示例”的攻略进行详细解答。
下面我会针对“Java Socket实现单线程通信的方法示例”的攻略进行详细解答。
1. 什么是Java Socket
Java Socket是一种用于网络编程的API,它提供了简单、高效的网络通信方式,允许程序通过网络连接来进行数据传输。
2. Java Socket实现单线程通信的方法
2.1 创建服务器
下面是一个简单的Java Socket服务器实现:
import java.net.*;
import java.io.*;
public class Server {
private ServerSocket serverSocket;
public Server(int port) throws IOException {
serverSocket = new ServerSocket(port);
}
public void run() {
while(true) {
try {
Socket socket = serverSocket.accept();
DataInputStream in = new DataInputStream(socket.getInputStream());
System.out.println(in.readUTF());
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
out.writeUTF("Thx for ur connection!");
socket.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws IOException {
Server server = new Server(8888);
server.run();
}
}
以上代码中,首先创建了一个ServerSocket
对象用于监听来自客户端的连接请求。当有客户端连接时,服务器会获取对应的输入流和输出流,然后进行通信。数据传输使用DataInputStream
和DataOutputStream
进行,这两个类经过封装可以很方便地进行数据读写操作。
2.2 创建客户端
下面是一个简单的Java Socket客户端:
import java.net.*;
import java.io.*;
public class Client {
private Socket socket;
public Client(String ip, int port) throws IOException {
socket = new Socket(ip, port);
}
public void run() {
try {
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
out.writeUTF("Hello from " + socket.getLocalSocketAddress());
DataInputStream in = new DataInputStream(socket.getInputStream());
System.out.println(in.readUTF());
socket.close();
} catch(IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
Client client = new Client("localhost", 8888);
client.run();
}
}
以上代码中,首先创建了一个Socket
对象用于连接指定的服务器。连接成功后,客户端会获取对应的输入流和输出流,然后进行通信。数据传输也是使用DataInputStream
和DataOutputStream
进行,这两个类经过封装可以很方便地进行数据读写操作。
3. 程序的运行流程
- 先运行服务器程序,它会监听8888端口来接收来自客户端的请求。
- 运行客户端程序,它会向服务器8888端口发送一条消息。
- 服务器接收到客户端发送的消息后,会在控制台上输出消息内容,并向客户端发送一条回复消息。
- 客户端接收到服务器发送的回复消息后,在控制台上输出消息内容。
- 连接结束后,服务器和客户端都会关闭连接。
织梦狗教程
本文标题为:Java Socket实现单线程通信的方法示例


基础教程推荐
猜你喜欢
- jsp中为表格添加水平滚动条的实现方法 2023-08-02
- 简单聊一聊Java线程池ThreadPoolExecutor 2022-12-27
- Java使用EasyExcel进行单元格合并的问题详解 2023-01-18
- 解决lombok 父类和子类builder不兼容的问题 2023-05-24
- Spring Boot:Idea从零开始初始化后台项目的教程 2023-08-08
- SpringMVC MVC架构与Servlet使用详解 2023-06-10
- Spring Boot + Canal 实现数据库实时监控 2023-04-22
- Spring Boot示例代码整合Redis详解 2023-02-05
- SpringBoot 整合 Spring-Session 实现分布式会话项目实战 2023-03-21
- SpringBoot应用线上重启脚本的命令详解 2023-02-10