クライアントとサーバー間のチャットプログラムになるプログラムがあります。次のように、クリックされたボタンに応じてソケットを設定しました。
public void actionPerformed(ActionEvent e)
{
Object o = e.getSource();
if(o==startServer)
{
startServer.enable(false);
try{
listenSocket = new ServerSocket(port);
Socket client = listenSocket.accept();
InputStreamReader is = new InputStreamReader(client.getInputStream());
BufferedReader buffRdr = new BufferedReader(is);
PrintWriter printWrt = new PrintWriter(client.getOutputStream(),true);
service = 1;
sendButton.enable(true);
disconnectButton.enable(true);
sendText.enable(true);
more = true;
}catch(IOException ie){
ie.printStackTrace();
}
}
if(o==connectButton)
{
try{
startServer.enable(false);
connectButton.enable(false);
Socket server = new Socket(host,port);
InputStreamReader is = new InputStreamReader(server.getInputStream());
BufferedReader buffRdr = new BufferedReader(is);
PrintWriter printWrt = new PrintWriter(server.getOutputStream(),true);
service = 2;
sendButton.enable(true);
disconnectButton.enable(true);
sendText.enable(true);
more = true;
}catch(IOException ie){
ie.printStackTrace();
}
}
プログラムの 2 つのインスタンスを実行すると、すべてが接続されているように見えますが、設定した sendText textBox からテキストを取得することをプログラムがどのように認識しているかわかりません。これが実行のセットアップ方法ですが、System.out.println("Service Changed") またはプログラムがサービスが 0 から変更されるのを待った後に "Listening to socket" を追加する場所には到達しません。
while(more)
{
statusArea.append("Chat Running");
String line;
try{
System.out.println(service);
while(service==0 && more);
System.out.println("Service Changed");
if(buffRdr!=null)
{
statusArea.append("Listening to socket");
while(more && (line=buffRdr.readLine())!=null)
{
chatArea.append(line);
}
}
}catch(IOException e)
{
}
}
これについての助けをいただければ幸いです。Javaでのプログラミングはかなり新しいです。