修改菜单 2023年3月16日16:33:48

master
zhangmeng 2023-03-16 16:34:16 +08:00
parent e11828a01f
commit a5930180d0
19 changed files with 257 additions and 0 deletions

View File

@ -542,4 +542,8 @@ public class CodecToolsController {
public void mail_menu_item(ActionEvent event) { public void mail_menu_item(ActionEvent event) {
load_small_tools(7); load_small_tools(7);
} }
public void socket_server_menu_item(ActionEvent event) {
load_server_tools(3);
}
} }

View File

@ -467,4 +467,8 @@ public class HomeController implements Serializable {
public void ssh_client_menu_item(ActionEvent event) { public void ssh_client_menu_item(ActionEvent event) {
load_server_tools(2); load_server_tools(2);
} }
public void socket_server_menu_item(ActionEvent event) {
load_server_tools(3);
}
} }

View File

@ -478,4 +478,8 @@ public class HttpToolsController {
public void mail_menu_item(ActionEvent event) { public void mail_menu_item(ActionEvent event) {
load_small_tools(7); load_small_tools(7);
} }
public void socket_server_menu_item(ActionEvent event) {
load_server_tools(3);
}
} }

View File

@ -414,4 +414,8 @@ public class NetWorkToolsController {
ListView<ResourcesUtils.Player> listView = (ListView) fx.lookup("#listView"); ListView<ResourcesUtils.Player> listView = (ListView) fx.lookup("#listView");
listView.getSelectionModel().select(index); listView.getSelectionModel().select(index);
} }
public void socket_server_menu_item(ActionEvent event) {
load_server_tools(3);
}
} }

View File

@ -500,4 +500,8 @@ public class PlayerController {
public void mail_menu_item(ActionEvent event) { public void mail_menu_item(ActionEvent event) {
load_small_tools(7); load_small_tools(7);
} }
public void socket_server_menu_item(ActionEvent event) {
load_server_tools(3);
}
} }

View File

@ -42,6 +42,7 @@ public class ServerToolsController {
private AnchorPane httpServer; private AnchorPane httpServer;
private AnchorPane ftpServer; private AnchorPane ftpServer;
private AnchorPane sshClient; private AnchorPane sshClient;
private AnchorPane socketServer;
public static final String color_cell = "#f4f4f4"; public static final String color_cell = "#f4f4f4";
@ -268,10 +269,32 @@ public class ServerToolsController {
} }
sshClient(flag); 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) { private void sshClient(boolean flag) {
listView.getSelectionModel().select(2); listView.getSelectionModel().select(2);
if (!flag){ if (!flag){
@ -328,6 +351,7 @@ public class ServerToolsController {
case Http_Server -> new Image(ImagePath.path(ImagePath.ImagePathType.MD5)); case Http_Server -> new Image(ImagePath.path(ImagePath.ImagePathType.MD5));
case Ftp_Server -> new Image(ImagePath.path(ImagePath.ImagePathType.SPRING_SECURITY)); case Ftp_Server -> new Image(ImagePath.path(ImagePath.ImagePathType.SPRING_SECURITY));
case SSH_Client -> 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); sshClient(flag);
} }
@FXML
public void socket_server_menu_item(ActionEvent event) {
boolean flag = false;
if (sshClient != null){
flag = true;
}
socketServer(flag);
}
} }

View File

@ -660,4 +660,8 @@ public class SmallToolsController {
ListView<ResourcesUtils.Player> listView = (ListView) fx.lookup("#listView"); ListView<ResourcesUtils.Player> listView = (ListView) fx.lookup("#listView");
listView.getSelectionModel().select(index); listView.getSelectionModel().select(index);
} }
public void socket_server_menu_item(ActionEvent event) {
load_server_tools(3);
}
} }

View File

@ -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());
}
}

View File

@ -423,4 +423,8 @@ public class SqlToolsController {
ListView<ResourcesUtils.Player> listView = (ListView) fx.lookup("#listView"); ListView<ResourcesUtils.Player> listView = (ListView) fx.lookup("#listView");
listView.getSelectionModel().select(index); listView.getSelectionModel().select(index);
} }
public void socket_server_menu_item(ActionEvent event) {
load_server_tools(3);
}
} }

View File

@ -275,6 +275,7 @@ public class ResourcesUtils {
Http_Server("Http Server工具",0), Http_Server("Http Server工具",0),
Ftp_Server("Ftp Server工具",1), Ftp_Server("Ftp Server工具",1),
SSH_Client("ssh 连接工具",2), SSH_Client("ssh 连接工具",2),
Socket_Server("socket Server",3);
; ;
ServerTools(String title, int index) { ServerTools(String title, int index) {

View File

@ -67,6 +67,7 @@
<MenuItem mnemonicParsing="false" text="http-server 请求工具" onAction="#http_server_menu_item"/> <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="ftp-server 请求工具" onAction="#ftp_server_menu_item"/>
<MenuItem mnemonicParsing="false" text="ssh-client 请求工具" onAction="#ssh_client_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> </items>
</Menu> </Menu>
</menus> </menus>

View File

@ -69,6 +69,7 @@
<MenuItem mnemonicParsing="false" text="http-server 请求工具" onAction="#http_server_menu_item"/> <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="ftp-server 请求工具" onAction="#ftp_server_menu_item"/>
<MenuItem mnemonicParsing="false" text="ssh-client 请求工具" onAction="#ssh_client_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> </items>
</Menu> </Menu>
</menus> </menus>

View File

@ -69,6 +69,7 @@
<MenuItem mnemonicParsing="false" text="http-server 请求工具" onAction="#http_server_menu_item"/> <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="ftp-server 请求工具" onAction="#ftp_server_menu_item"/>
<MenuItem mnemonicParsing="false" text="ssh-client 连接工具" onAction="#ssh_client_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> </items>
</Menu> </Menu>
</menus> </menus>

View File

@ -69,6 +69,7 @@
<MenuItem mnemonicParsing="false" text="http-server 请求工具" onAction="#http_server_menu_item"/> <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="ftp-server 请求工具" onAction="#ftp_server_menu_item"/>
<MenuItem mnemonicParsing="false" text="ssh-client 请求工具" onAction="#ssh_client_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> </items>
</Menu> </Menu>
</menus> </menus>

View File

@ -67,6 +67,7 @@
<MenuItem mnemonicParsing="false" text="http-server 请求工具" onAction="#http_server_menu_item"/> <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="ftp-server 请求工具" onAction="#ftp_server_menu_item"/>
<MenuItem mnemonicParsing="false" text="ssh-client 请求工具" onAction="#ssh_client_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> </items>
</Menu> </Menu>
</menus> </menus>

View File

@ -69,6 +69,7 @@
<MenuItem mnemonicParsing="false" text="http-server 请求工具" onAction="#http_server_menu_item"/> <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="ftp-server 请求工具" onAction="#ftp_server_menu_item"/>
<MenuItem mnemonicParsing="false" text="ssh-client 连接工具" onAction="#ssh_client_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> </items>
</Menu> </Menu>
</menus> </menus>

View File

@ -67,6 +67,7 @@
<MenuItem mnemonicParsing="false" text="http-server 请求工具" onAction="#http_server_menu_item"/> <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="ftp-server 请求工具" onAction="#ftp_server_menu_item"/>
<MenuItem mnemonicParsing="false" text="ssh-client 连接工具" onAction="#ssh_client_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> </items>
</Menu> </Menu>
</menus> </menus>

View File

@ -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>

View File

@ -69,6 +69,7 @@
<MenuItem mnemonicParsing="false" text="http-server 请求工具" onAction="#http_server_menu_item"/> <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="ftp-server 请求工具" onAction="#ftp_server_menu_item"/>
<MenuItem mnemonicParsing="false" text="ssh-client 请求工具" onAction="#ssh_client_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> </items>
</Menu> </Menu>
</menus> </menus>