修改菜单 2023年3月16日16:33:48
parent
e11828a01f
commit
a5930180d0
|
|
@ -542,4 +542,8 @@ public class CodecToolsController {
|
|||
public void mail_menu_item(ActionEvent event) {
|
||||
load_small_tools(7);
|
||||
}
|
||||
|
||||
public void socket_server_menu_item(ActionEvent event) {
|
||||
load_server_tools(3);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -467,4 +467,8 @@ public class HomeController implements Serializable {
|
|||
public void ssh_client_menu_item(ActionEvent event) {
|
||||
load_server_tools(2);
|
||||
}
|
||||
|
||||
public void socket_server_menu_item(ActionEvent event) {
|
||||
load_server_tools(3);
|
||||
}
|
||||
}
|
||||
|
|
@ -478,4 +478,8 @@ public class HttpToolsController {
|
|||
public void mail_menu_item(ActionEvent event) {
|
||||
load_small_tools(7);
|
||||
}
|
||||
|
||||
public void socket_server_menu_item(ActionEvent event) {
|
||||
load_server_tools(3);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -414,4 +414,8 @@ public class NetWorkToolsController {
|
|||
ListView<ResourcesUtils.Player> listView = (ListView) fx.lookup("#listView");
|
||||
listView.getSelectionModel().select(index);
|
||||
}
|
||||
|
||||
public void socket_server_menu_item(ActionEvent event) {
|
||||
load_server_tools(3);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -500,4 +500,8 @@ public class PlayerController {
|
|||
public void mail_menu_item(ActionEvent event) {
|
||||
load_small_tools(7);
|
||||
}
|
||||
|
||||
public void socket_server_menu_item(ActionEvent event) {
|
||||
load_server_tools(3);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ public class ServerToolsController {
|
|||
private AnchorPane httpServer;
|
||||
private AnchorPane ftpServer;
|
||||
private AnchorPane sshClient;
|
||||
private AnchorPane socketServer;
|
||||
|
||||
public static final String color_cell = "#f4f4f4";
|
||||
|
||||
|
|
@ -268,10 +269,32 @@ public class ServerToolsController {
|
|||
}
|
||||
sshClient(flag);
|
||||
}
|
||||
|
||||
if (newValue.getIndex() == 3){
|
||||
if (socketServer != null){
|
||||
flag = true;
|
||||
}
|
||||
socketServer(flag);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void socketServer(boolean flag){
|
||||
listView.getSelectionModel().select(3);
|
||||
if (!flag){
|
||||
try {
|
||||
root = FXMLLoader.load(ResourcesUtils.getResource("socket-server"));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
ftpServer = root;
|
||||
}else {
|
||||
root = ftpServer;
|
||||
}
|
||||
common_method();
|
||||
}
|
||||
|
||||
private void sshClient(boolean flag) {
|
||||
listView.getSelectionModel().select(2);
|
||||
if (!flag){
|
||||
|
|
@ -328,6 +351,7 @@ public class ServerToolsController {
|
|||
case Http_Server -> new Image(ImagePath.path(ImagePath.ImagePathType.MD5));
|
||||
case Ftp_Server -> new Image(ImagePath.path(ImagePath.ImagePathType.SPRING_SECURITY));
|
||||
case SSH_Client -> new Image(ImagePath.path(ImagePath.ImagePathType.SPRING_SECURITY));
|
||||
case Socket_Server -> new Image(ImagePath.path(ImagePath.ImagePathType.SPRING_SECURITY));
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -474,4 +498,13 @@ public class ServerToolsController {
|
|||
}
|
||||
sshClient(flag);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void socket_server_menu_item(ActionEvent event) {
|
||||
boolean flag = false;
|
||||
if (sshClient != null){
|
||||
flag = true;
|
||||
}
|
||||
socketServer(flag);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -660,4 +660,8 @@ public class SmallToolsController {
|
|||
ListView<ResourcesUtils.Player> listView = (ListView) fx.lookup("#listView");
|
||||
listView.getSelectionModel().select(index);
|
||||
}
|
||||
|
||||
public void socket_server_menu_item(ActionEvent event) {
|
||||
load_server_tools(3);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,166 @@
|
|||
package com.zhangmeng.tools.controller;
|
||||
|
||||
import javafx.application.Platform;
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.collections.ListChangeListener;
|
||||
import javafx.collections.ObservableList;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.TextArea;
|
||||
import javafx.scene.control.TextField;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.java_websocket.WebSocket;
|
||||
import org.java_websocket.handshake.ClientHandshake;
|
||||
import org.java_websocket.server.WebSocketServer;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author : 芊芊墨客
|
||||
* @version : 1.0
|
||||
* @date : 2023-03-16 11:22
|
||||
*/
|
||||
@Slf4j
|
||||
public class SocketServerController {
|
||||
|
||||
@FXML
|
||||
public TextField server_status;
|
||||
|
||||
@FXML
|
||||
public Button stop;
|
||||
|
||||
@FXML
|
||||
public Button start;
|
||||
|
||||
@FXML
|
||||
public TextField port;
|
||||
|
||||
public static ObservableList<String> message_list = FXCollections.observableArrayList();
|
||||
|
||||
@FXML
|
||||
public TextArea message_show;
|
||||
|
||||
private WebSocketServer webSocketServer;
|
||||
|
||||
private boolean isStart;
|
||||
|
||||
public static Map<String,WebSocket> map = new HashMap<>();
|
||||
|
||||
@FXML
|
||||
public void initialize() {
|
||||
if (server_status.getText().length() == 0 ){
|
||||
server_status.setText("服务未启动!");
|
||||
}
|
||||
|
||||
port.setText(String.valueOf(9999));
|
||||
start.setOnAction(event -> {
|
||||
if (isStart){
|
||||
try {
|
||||
webSocketServer.stop();
|
||||
} catch (IOException | InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
sshServer_init();
|
||||
});
|
||||
|
||||
stop.setOnAction(event -> {
|
||||
if (isStart){
|
||||
try {
|
||||
webSocketServer.stop();
|
||||
isStart = false;
|
||||
server_status.setText("服务已经停止!端口:" + port.getText());
|
||||
} catch (IOException | InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
message_list.addListener((ListChangeListener<String>) c -> {
|
||||
while (c.next()) {
|
||||
if (c.wasAdded()) {
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
for (String s : message_list) {
|
||||
stringBuilder.append(s);
|
||||
}
|
||||
receive(stringBuilder.toString());
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void sshServer_init(){
|
||||
//启动socket server
|
||||
webSocketServer = new WebSocketServer(new InetSocketAddress(Integer.parseInt(port.getText()))) {
|
||||
|
||||
@Override
|
||||
public void onOpen(WebSocket webSocket, ClientHandshake clientHandshake) {
|
||||
add_message("WebSocketServer:open----------------------------------------------");
|
||||
put(webSocket);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClose(WebSocket webSocket, int i, String s, boolean b) {
|
||||
add_message("WebSocketServer:onClose--------------------------------------------");
|
||||
remove(webSocket);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMessage(WebSocket webSocket, String s) {
|
||||
add_message("WebSocketServer:onMessage--------------------------------------------");
|
||||
add_message(s);
|
||||
webSocket.send(s);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(WebSocket webSocket, Exception e) {
|
||||
add_message("WebSocketServer:onError--------------------------------------------");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
add_message("WebSocketServer:onStart--------------------------------------------");
|
||||
}
|
||||
};
|
||||
webSocketServer.start();
|
||||
isStart = true;
|
||||
server_status.setText("服务已启动!端口:" + port.getText());
|
||||
}
|
||||
|
||||
public void put(WebSocket webSocket){
|
||||
String resourceDescriptor = webSocket.getResourceDescriptor();
|
||||
String[] split = resourceDescriptor.split("\\?");
|
||||
if (split.length > 0){
|
||||
String params = split[1];
|
||||
String userId = params.split("&")[0].split("=")[1];
|
||||
map.put(userId,webSocket);
|
||||
}
|
||||
}
|
||||
|
||||
public WebSocket get(String userId){
|
||||
return map.get(userId);
|
||||
}
|
||||
|
||||
public void remove(WebSocket webSocket){
|
||||
String resourceDescriptor = webSocket.getResourceDescriptor();
|
||||
String[] split = resourceDescriptor.split("\\?");
|
||||
if (split.length > 0){
|
||||
String params = split[1];
|
||||
String userId = params.split("&")[0].split("=")[1];
|
||||
map.remove(userId);
|
||||
}
|
||||
}
|
||||
|
||||
public void receive(String msg) {
|
||||
Platform.runLater(() -> {
|
||||
this.message_show.setText(msg);
|
||||
});
|
||||
}
|
||||
|
||||
public static void add_message(String msg){
|
||||
message_list.add(msg);
|
||||
message_list.add(System.lineSeparator());
|
||||
}
|
||||
}
|
||||
|
|
@ -423,4 +423,8 @@ public class SqlToolsController {
|
|||
ListView<ResourcesUtils.Player> listView = (ListView) fx.lookup("#listView");
|
||||
listView.getSelectionModel().select(index);
|
||||
}
|
||||
|
||||
public void socket_server_menu_item(ActionEvent event) {
|
||||
load_server_tools(3);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -275,6 +275,7 @@ public class ResourcesUtils {
|
|||
Http_Server("Http Server工具",0),
|
||||
Ftp_Server("Ftp Server工具",1),
|
||||
SSH_Client("ssh 连接工具",2),
|
||||
Socket_Server("socket Server",3);
|
||||
;
|
||||
|
||||
ServerTools(String title, int index) {
|
||||
|
|
|
|||
|
|
@ -67,6 +67,7 @@
|
|||
<MenuItem mnemonicParsing="false" text="http-server 请求工具" onAction="#http_server_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="ftp-server 请求工具" onAction="#ftp_server_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="ssh-client 请求工具" onAction="#ssh_client_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="socket-server 服务工具" onAction="#socket_server_menu_item"/>
|
||||
</items>
|
||||
</Menu>
|
||||
</menus>
|
||||
|
|
|
|||
|
|
@ -69,6 +69,7 @@
|
|||
<MenuItem mnemonicParsing="false" text="http-server 请求工具" onAction="#http_server_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="ftp-server 请求工具" onAction="#ftp_server_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="ssh-client 请求工具" onAction="#ssh_client_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="socket-server 服务工具" onAction="#socket_server_menu_item"/>
|
||||
</items>
|
||||
</Menu>
|
||||
</menus>
|
||||
|
|
|
|||
|
|
@ -69,6 +69,7 @@
|
|||
<MenuItem mnemonicParsing="false" text="http-server 请求工具" onAction="#http_server_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="ftp-server 请求工具" onAction="#ftp_server_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="ssh-client 连接工具" onAction="#ssh_client_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="socket-server 服务工具" onAction="#socket_server_menu_item"/>
|
||||
</items>
|
||||
</Menu>
|
||||
</menus>
|
||||
|
|
|
|||
|
|
@ -69,6 +69,7 @@
|
|||
<MenuItem mnemonicParsing="false" text="http-server 请求工具" onAction="#http_server_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="ftp-server 请求工具" onAction="#ftp_server_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="ssh-client 请求工具" onAction="#ssh_client_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="socket-server 服务工具" onAction="#socket_server_menu_item"/>
|
||||
</items>
|
||||
</Menu>
|
||||
</menus>
|
||||
|
|
|
|||
|
|
@ -67,6 +67,7 @@
|
|||
<MenuItem mnemonicParsing="false" text="http-server 请求工具" onAction="#http_server_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="ftp-server 请求工具" onAction="#ftp_server_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="ssh-client 请求工具" onAction="#ssh_client_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="socket-server 服务工具" onAction="#socket_server_menu_item"/>
|
||||
</items>
|
||||
</Menu>
|
||||
</menus>
|
||||
|
|
|
|||
|
|
@ -69,6 +69,7 @@
|
|||
<MenuItem mnemonicParsing="false" text="http-server 请求工具" onAction="#http_server_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="ftp-server 请求工具" onAction="#ftp_server_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="ssh-client 连接工具" onAction="#ssh_client_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="socket-server 服务工具" onAction="#socket_server_menu_item"/>
|
||||
</items>
|
||||
</Menu>
|
||||
</menus>
|
||||
|
|
|
|||
|
|
@ -67,6 +67,7 @@
|
|||
<MenuItem mnemonicParsing="false" text="http-server 请求工具" onAction="#http_server_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="ftp-server 请求工具" onAction="#ftp_server_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="ssh-client 连接工具" onAction="#ssh_client_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="socket-server 服务工具" onAction="#socket_server_menu_item"/>
|
||||
</items>
|
||||
</Menu>
|
||||
</menus>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import javafx.scene.control.Button?>
|
||||
<?import javafx.scene.control.Label?>
|
||||
<?import javafx.scene.control.TextArea?>
|
||||
<?import javafx.scene.control.TextField?>
|
||||
<?import javafx.scene.layout.AnchorPane?>
|
||||
|
||||
|
||||
<AnchorPane fx:controller="com.zhangmeng.tools.controller.SocketServerController" prefHeight="649.0" prefWidth="1200.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" >
|
||||
<children>
|
||||
<Label layoutX="105.0" layoutY="34.0" text="端口:" />
|
||||
<TextField fx:id="port" layoutX="157.0" layoutY="30.0" />
|
||||
<Label layoutX="80.0" layoutY="86.0" text="日志展示:" />
|
||||
<Button fx:id="start" layoutX="345.0" layoutY="30.0" mnemonicParsing="false" text="启动" />
|
||||
<Button fx:id="stop" layoutX="408.0" layoutY="30.0" mnemonicParsing="false" text="停止" />
|
||||
<Label layoutX="506.0" layoutY="34.0" text="服务状态:" />
|
||||
<TextField fx:id="server_status" layoutX="574.0" layoutY="30.0" />
|
||||
<TextArea fx:id="message_show" layoutX="157.0" layoutY="95.0" prefHeight="523.0" prefWidth="1009.0" AnchorPane.bottomAnchor="31.0" AnchorPane.leftAnchor="157.0" AnchorPane.rightAnchor="34.0" AnchorPane.topAnchor="95.0" />
|
||||
</children>
|
||||
</AnchorPane>
|
||||
|
|
@ -69,6 +69,7 @@
|
|||
<MenuItem mnemonicParsing="false" text="http-server 请求工具" onAction="#http_server_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="ftp-server 请求工具" onAction="#ftp_server_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="ssh-client 请求工具" onAction="#ssh_client_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="socket-server 服务工具" onAction="#socket_server_menu_item"/>
|
||||
</items>
|
||||
</Menu>
|
||||
</menus>
|
||||
|
|
|
|||
Loading…
Reference in New Issue