springboot中利用socket实现硬件数据模拟并在前端显示图文教程
时间: 2023-05-26 09:05:52 浏览: 96
1. 构建Springboot项目
在开始使用Springboot实现socket之前,我们需要首先构建一个Springboot项目。可以使用Maven和Spring Initializr来创建项目。具体步骤如下:
1)访问Spring Initializr地址:https://start.spring.io/
2)选择相关配置信息,如项目名称、描述、包名称、Java版本、Springboot版本等。
3)点击生成按钮,然后下载生成的项目,解压后导入IDEA中。
2. 编写服务端代码
在创建完Springboot项目后,需要编写服务端代码。首先创建一个类,用于处理客户端请求。
```java
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
@Component
public class SocketServer {
@Value("${server.port}")
private int port;
public void start() {
new Thread(new Runnable() {
@Override
public void run() {
try {
ServerSocket serverSocket = new ServerSocket(port);
System.out.println("Socket 服务端已经启动,端口: " + port);
while (true) {
Socket socket = serverSocket.accept();
OutputStream out = socket.getOutputStream();
out.write(new Date().toString().getBytes());
out.flush();
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
}
```
在这个类中,我们使用@Configuration和@ComponentScan注解,使Springboot能够自动扫描到这个类并注入到容器中。
在该类中,我们定义了一个start方法,用于启动Socket服务端。在该方法中,首先通过ServerSocket创建一个Socket服务端,然后等待客户端的连接。当客户端连接后,服务端会将当前的时间字符串发送给客户端。
3. 编写客户端代码
在服务端代码编写完成后,我们需要编写一个客户端程序,用于连接服务端。
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
@Component
public class SocketClient {
@Value("${server.port}")
private int port;
@Value("${server.host}")
private String host;
public void start() {
new Thread(new Runnable() {
@Override
public void run() {
try {
Socket socket = new Socket(host, port);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String message = in.readLine();
System.out.println("接收到服务端消息:" + message);
in.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
}
```
在该类中,我们定义了一个start方法,用于启动Socket客户端。在该方法中,首先通过Socket创建一个客户端,然后通过BufferedReader读取服务端发送的时间字符串。
4. 配置文件
为了让服务端和客户端能够正确的连接,需要在配置文件中设置host和port。下面是一个简单的配置文件。
```properties
# 端口号
server.port=5050
# 服务端主机名
server.host=localhost
```
5. 测试
在编写完服务端和客户端代码之后,可以通过Junit测试来验证socket连接是否成功。
```java
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class SocketTest {
@Autowired
private SocketServer server;
@Autowired
private SocketClient client;
@Test
void test01() throws Exception {
server.start();
client.start();
Thread.sleep(5000);
}
}
```
在该测试用例中,我们通过@Autowired注入了SocketServer和SocketClient两个类的实例,然后在测试方法中调用了start方法,启动服务端和客户端,最后等待5秒,测试是否成功连接。
运行以上测试代码,如果测试通过,则表示我们已经成功的使用Springboot实现了socket功能。可以根据自己的需求,按照以上方法进行修改和扩展,实现更加复杂的功能。
阅读全文