diff --git a/.vscode/launch.json b/.vscode/launch.json
index e881968..fd70916 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -6,6 +6,13 @@
"configurations": [
{
"type": "java",
+ "name": "WebSocketServer",
+ "request": "launch",
+ "mainClass": "info.istlab.ServerTester.WebSocketServer",
+ "projectName": "KisoServerTester"
+ },
+ {
+ "type": "java",
"name": "App",
"request": "launch",
"mainClass": "info.istlab.ServerTester.App",
diff --git a/pom.xml b/pom.xml
index f70b6b1..d8345f0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,4 +1,5 @@
-
4.0.0
info.istlab.ServerTester
@@ -32,9 +33,9 @@
@@ -79,4 +80,4 @@
-
+
\ No newline at end of file
diff --git a/src/main/java/info/istlab/ServerTester/App.java b/src/main/java/info/istlab/ServerTester/App.java
index ad8f13e..b1df7db 100644
--- a/src/main/java/info/istlab/ServerTester/App.java
+++ b/src/main/java/info/istlab/ServerTester/App.java
@@ -37,7 +37,5 @@
WhiteBoardServer wb = new WhiteBoardServer(11111, "0.0.0.0");
myhost.addPanel(new ServerPanel(wb, myhost));
-
- new UDPServer().start();
}
}
diff --git a/src/main/java/info/istlab/ServerTester/Host.java b/src/main/java/info/istlab/ServerTester/Host.java
index 6c4d322..6b0b48c 100644
--- a/src/main/java/info/istlab/ServerTester/Host.java
+++ b/src/main/java/info/istlab/ServerTester/Host.java
@@ -14,8 +14,10 @@
public static Host mainhost;
public JPanel mainPanel;
+ public UDPServer server;
+
public Host() {
- setTitle("Host");
+ setTitle("サーバー管理ウィンドウ");
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
@@ -28,6 +30,8 @@
addPanel.setBorder(BorderFactory.createTitledBorder("Start New Server (Class, Port, Bind address)"));
add(addPanel, BorderLayout.NORTH);
mainhost = this;
+
+ server = new UDPServer();
}
private void setupMenu() {
@@ -36,16 +40,27 @@
JMenu menu = new JMenu("Menu");
menuBar.add(menu);
- JMenuItem sendItem = new JMenuItem("現在自ホストで起動しているサーバ情報をブロードキャストで送信");
+ JMenu channel = new JMenu("班の番号を選択");
+ menu.add(channel);
+ for(int i = 1; i <= 6; i++) {
+ JMenuItem item = new JMenuItem(String.valueOf(i));
+ channel.add(item);
+ item.addActionListener(e -> {
+ System.out.println("班の番号: " + item.getText());
+ server = new UDPServer(54320 + Integer.parseInt(item.getText())); // 54320 + 班の番号 のポート番号で待つ
+ });
+ }
+
+ JMenuItem sendItem = new JMenuItem("このホストのサーバ情報をブロードキャストで送信");
menu.add(sendItem);
sendItem.addActionListener(e -> {
- new UDPClient(mainPanel);
+ new UDPClient(mainPanel, server.port);
});
JMenuItem showItem = new JMenuItem("近隣ホストのサーバ情報を表示");
menu.add(showItem);
showItem.addActionListener(e -> {
- UDPServer.instance.openWindow();
+ server.openWindow();
});
menu.addSeparator();
diff --git a/src/main/java/info/istlab/ServerTester/RemoteHostsWindow.java b/src/main/java/info/istlab/ServerTester/RemoteHostsWindow.java
index c973524..4244704 100644
--- a/src/main/java/info/istlab/ServerTester/RemoteHostsWindow.java
+++ b/src/main/java/info/istlab/ServerTester/RemoteHostsWindow.java
@@ -19,7 +19,7 @@
public RemoteHostsWindow(Hashtable receivedData) {
JFrame frame = new JFrame();
- frame.setTitle("Remote Hosts");
+ frame.setTitle("Remote Hosts (自動更新はしません)");
frame.setSize(300, 200);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
@@ -31,7 +31,7 @@
String value = receivedData.get(key);
tabbedPane.add(key, new RemoteHostPanel(key, value));
}
-
+ frame.setLocation(50,400);
frame.pack();
frame.setVisible(true);
}
diff --git a/src/main/java/info/istlab/ServerTester/UDPClient.java b/src/main/java/info/istlab/ServerTester/UDPClient.java
index 16384c0..90838b8 100644
--- a/src/main/java/info/istlab/ServerTester/UDPClient.java
+++ b/src/main/java/info/istlab/ServerTester/UDPClient.java
@@ -10,7 +10,7 @@
public class UDPClient {
public static void main(String[] args) {
}
- public UDPClient(JPanel mainPanel) {
+ public UDPClient(JPanel mainPanel, int portnum) {
// 情報収集
StringBuffer sb = new StringBuffer();
for(Component c: mainPanel.getComponents()){
@@ -35,7 +35,7 @@
// データグラムパケットを作成
DatagramPacket packet = new DatagramPacket(
messageData, messageData.length,
- serverAddress, 54321
+ serverAddress, portnum
);
// メッセージを送信
diff --git a/src/main/java/info/istlab/ServerTester/UDPServer.java b/src/main/java/info/istlab/ServerTester/UDPServer.java
index 16dbaa0..0f4c659 100644
--- a/src/main/java/info/istlab/ServerTester/UDPServer.java
+++ b/src/main/java/info/istlab/ServerTester/UDPServer.java
@@ -5,10 +5,12 @@
import java.net.DatagramSocket;
import java.util.Hashtable;
+import javax.swing.JOptionPane;
+
public class UDPServer implements Runnable {
- public static UDPServer instance;
Thread thread;
DatagramSocket socket = null;
+ public int port;
// 受信したデータを IP アドレスをキーにして保存
Hashtable receivedData = new Hashtable();
@@ -18,19 +20,20 @@
}
public UDPServer() {
- this(54321);
+ this(54320);
}
- public UDPServer(int port) {
+ public UDPServer(int _port) {
+ port = _port;
try {
// サーバーソケットを指定されたポートで作成
socket = new DatagramSocket(port);
- System.out.println("[UDP] UDPサーバーがポート"+port+"で待機中...");
+ System.out.println("[UDP] 近隣ホスト情報を集めるUDPサーバーがポート"+port+"で待機中...");
} catch (Exception e) {
e.printStackTrace();
}
- instance = this;
+ start();
}
public void start(){
if(thread == null){
@@ -74,6 +77,10 @@
}
}
public void openWindow(){
+ if (receivedData.size() == 0) {
+ JOptionPane.showMessageDialog(Host.mainhost, "受信したデータがありません。", "受信データなし", JOptionPane.WARNING_MESSAGE);
+ return;
+ }
new RemoteHostsWindow(receivedData);
}
}