Отправка данных JTable с сервера на клиент JTable через сокеты

0

У меня есть JTable в моей форме SERVER, она заполняется из базы данных MySQL, закодированной в конструкторе:

String sql = "SELECT * from fiekorari";
        try{
        pst=conn.prepareStatement(sql);
        res=pst.executeQuery();
        table.setModel(DbUtils.resultSetToTableModel(res));
        pst.close();
        res.close();
        } catch (SQLException e1){
            e1.printStackTrace();
        }

Соединение установлено на основном с использованием TCP-соединения, SERVER SIDE:

public class Serveri extends JFrame {

    private JPanel contentPane;
    static ServerSocket ss;
    static Socket s;
    static DataInputStream din;
    static DataOutputStream dout;
    private JTextField txtMesazhi;
    private static JTextArea txtA;
    static Connection conn=null;
    static ResultSet res= null;
    static PreparedStatement pst = null;
    private Object id;


    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Serveri frame = new Serveri();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
        SqlConn.getConnection();
        String msgin="";
        try 
        {
            ss=new ServerSocket(1201);
            s=ss.accept();
            din=new DataInputStream(s.getInputStream());
            dout=new DataOutputStream(s.getOutputStream()); //code continues with chat programming

Я хочу отправить данные с JTable на стороне сервера в JTable на стороне клиента, im не уверен, что это правильный подход к нему, но мое назначение состоит в том, что сервер будет считывать данные DB и отправляет его клиенту.

Ниже приведен код клиентской стороны, который устанавливает соединение через TCP для общения в чате, но теперь не нужно добавлять таблицу, которая считывает данные из таблицы Servers через сокеты:

public class Klienti extends JFrame {

    private JPanel contentPane;
    private JTextField txtMesazhi;
    private static JTextArea txtShfaq1;
    static Socket s;
    static DataInputStream din;
    static DataOutputStream dout;
    private JButton btnNewButton;
    public static String sql1;
    private JTable table;
    private JTextField txtEmri;
    private JTextField txtMbiemri;
    private JTextField txtOra;
    static Connection conn=null;
    static ResultSet res= null;
    static PreparedStatement pst = null;
     private Pattern pattern;
     private Matcher matcher;
     private String loc;



    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Klienti frame = new Klienti();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
        //SqlConn.getConnection();
        try 
        {
            s=new Socket("localhost",1201);
            din=new DataInputStream(s.getInputStream());
            dout=new DataOutputStream(s.getOutputStream());

//code in constructor Client side which sends text message to Server through sockets: 

dout.writeUTF(msgout);
            txtShfaq1.setText(txtShfaq1.getText().trim()+"\nJu:\t"+msgout);
            txt.setText("");
Теги:
sockets
chat
jtable

1 ответ

0

Нет, вы не должны отправлять JTable с сервера на клиент. На самом деле сервер не должен иметь никакого качающегося компонента. Он должен просто извлекать данные по запросу и отправлять только данные в подходящем формате, а не в JTable.

Другим моментом, насколько это возможно, является не простая связь сокетов. Используйте протокол более высокого уровня, например HTTP. Сервер может запускать веб-службу http и может предоставлять данные в формате json, xml.

Клиент может использовать любое из множества доступных http-клиентов для получения данных с сервера. Эти библиотеки позаботились о многих проблемах сокетов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню