0

Swing を使用してクライアント サーバー チャット アプリケーションを構築しようとしています。

クライアントを起動すると、クライアント サイトで受信できるメッセージが送信されますが、サーバー サイトのボタンを押しても新しいフレームが開かれません (私の場合はここでエラーです)。

どうすれば解決できますか?誰かが私に他の方法を提案できますか?

私のコードは(サーバーサイト)です:

import java.net.*;
import java.io.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.sql.*;
class Cli extends JFrame
{
   ServerSocket ss;
   Socket soc;
   InputStream in;
   OutputStream out;

   DataInputStream sin;
   DataOutputStream sout;

   JLabel l1;
   JTextField txt1;
   JButton addd;
  Cli()  throws Exception
  {
Class.forName("com.mysql.jdbc.Driver");
Connection cn=DriverManager.getConnection("jdbc:mysql://localhost:3306/nirav","root","root");
JPanel pan=new JPanel(new GridLayout(2,1));
ss=new ServerSocket(8888);
//ss.setSOLimit(10000);
l1=new JLabel("waiting for client");
txt1=new JTextField(40);
addd=new JButton("click here to send");
addd.addActionListener(new ActionListener()
      {
    public void actionPerformed(ActionEvent ae) 
        {   try{
                JOptionPane.showMessageDialog(null,"Data is successfully inserted into the database." );    
                l1.setText("waiting");
                Recieve c=new Recieve();
                c.setSize(300,300); 
                c.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
                c.setVisible(true);

                }catch(Exception e)
                {
                System.out.println(e.toString());
                }
            }                               
        }); 
soc=ss.accept();
in=soc.getInputStream();
out=soc.getOutputStream();
sin=new DataInputStream(in);
sout=new DataOutputStream(out); 
String s="";
try{
    s=sin.readUTF();        
    }catch(Exception e)
    {
    }
    l1.setText("client :"+s);
pan.add(l1);
pan.add(txt1);
pan.add(addd);
add(pan);
}
class Recieve extends JFrame
{
JLabel msg;
JTextField t1;
JButton a1;
 Recieve() throws Exception
 {  
JPanel pan=new JPanel(new GridLayout(2,1));
t1=new JTextField(40);
a1=new JButton("click here to send");
//msg=new JLabel("waiting...");
 a1.addActionListener(new ActionListener()
{   public void actionPerformed(ActionEvent ae)
        {   try{
                String s;
                String str="Server :";
                sout.writeUTF(t1.getText());
                //msg.setText(str);
                sout.flush();
            }catch(Exception e)
{
System.out.println(e.toString());
}
}});
pan.add(t1);
pan.add(a1);
add(pan);
   }
   }
  }
 class Server 
{   
  public static void main(String args[]) throws Exception
{
try{

Cli c=new Cli();
c.setSize(300,300);
c.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
c.setVisible(true);
}
catch(Exception e)
{
System.out.println(e.toString());
}

}
  }
4

1 に答える 1

0

サーバーから送信されたメッセージをどのようにキャプチャしていますか?アプリケーションがサーバーからデータを受信するたびに、UIリスナーを使用して、更新されたものをチャットウィンドウに表示するものを実装する必要があります。

簡単な調査を行ったところ、このプロジェクトが見つかりました。彼のコードを参照として使用して、プログラムを実装してみてください: https ://github.com/rafaelsakurai/socket-exemplo-chat-swing

于 2012-12-14T16:18:30.497 に答える