Я занимаюсь разработкой простого клиент-серверного приложения.Ранее я написал работающее консольное приложение, но когда я добавил GUI и попытался запустить сервер, приложение зависло.Я реализовал «консоль», используя JTextPane
, и хочу напечатать все выходные сообщения на этой консоли.Пожалуйста, улучшите или исправьте мой код и скажите, где я ошибся.
package com.module.server;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JTextField;
import java.awt.BorderLayout;
import javax.swing.JLabel;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketImpl;
import java.net.UnknownHostException;
import java.util.Date;
import java.awt.event.ActionEvent;
import javax.swing.JTextPane;
public class Entry {
private JFrame frame;
private JTextField textIP;
private JTextField textPort;
private JButton btnNewButton;
/**
* Launch the application.
* @throws
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Entry window = new Entry();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
* @throws UnknownHostException
*/
public Entry() throws UnknownHostException {
initialize();
}
/**
* Initialize the contents of the frame.
* @throws UnknownHostException
*/
private void initialize() throws UnknownHostException {
frame = new JFrame();
frame.setBounds(100, 100, 704, 493);
frame.setTitle("Server Control Panel");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
textIP = new JTextField();
textIP.setBounds(80, 39, 496, 27);
frame.getContentPane().add(textIP);
textIP.setColumns(10);
JLabel lblIpAddress = new JLabel("IP Address");
lblIpAddress.setBounds(10, 45, 77, 14);
frame.getContentPane().add(lblIpAddress);
textPort = new JTextField();
textPort.setBounds(80, 77, 86, 27);
frame.getContentPane().add(textPort);
textPort.setColumns(10);
JLabel lblPort = new JLabel("Port");
lblPort.setBounds(10, 83, 46, 14);
frame.getContentPane().add(lblPort);
JTextPane ConsolePane = new JTextPane();
ConsolePane.setBounds(10, 152, 668, 291);
frame.getContentPane().add(ConsolePane);
JLabel lblConsole = new JLabel("Console:-");
lblConsole.setBounds(10, 127, 92, 26);
frame.getContentPane().add(lblConsole);
JButton btnStart = new JButton("Start Service");
btnStart.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
ServerSocket server = null;
try {
server = new ServerSocket(2000);
while(true)
{
ConsolePane.setText("Waiting for Clients.......!");
Socket Client = server.accept();
ConsolePane.setText("Client connected from
"+Client.getRemoteSocketAddress());
OutputStream os = Client.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
dos.writeUTF("Welcome to Time Server ......");
dos.writeUTF(new Date().toString());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
btnStart.setBounds(422, 77, 116, 27);
frame.getContentPane().add(btnStart);
btnNewButton = new JButton("GET IP & Port");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
InetAddress localhost;
try {
localhost = InetAddress.getLocalHost();
textIP.setText(localhost.getHostAddress());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
btnNewButton.setBounds(260, 79, 152, 23);
frame.getContentPane().add(btnNewButton);
}
}