K
k.west
Gast
Hi,
ich hab versucht einen einfachen Chat nur zwischen zwei Computern (im Heimnetzwerk) zu programmieren. Deshalb habe ich dem "Serverteil" des Programms mithilfe Runnable einen Thread zugewiesen (soll ja immer empfangen).
Wenn ich das Programm auf beiden Computern starte, funktioniert zunächst auch alles super (Verbindung kann aufgebaut werden usw.), wenn ich aber was in den Chat schreibe, wird es nur beim "Absender" angezeigt.
Habs auch schon mit zwei parallelen Threads für "Server-" und "Clientteil" meines Programms versucht, ist aber genau dasselbe rausgekommen.
Bin auf dem Gebiet noch ziemlicher Anfänger, kann also sein, dass das hier totaler Müll ist.
ich hab versucht einen einfachen Chat nur zwischen zwei Computern (im Heimnetzwerk) zu programmieren. Deshalb habe ich dem "Serverteil" des Programms mithilfe Runnable einen Thread zugewiesen (soll ja immer empfangen).
Wenn ich das Programm auf beiden Computern starte, funktioniert zunächst auch alles super (Verbindung kann aufgebaut werden usw.), wenn ich aber was in den Chat schreibe, wird es nur beim "Absender" angezeigt.
Java:
import java.net.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MaxChat extends JFrame implements Runnable
{
JTextArea chat;
JTextField eingabe;
Thread empfang;
Socket s;
ServerSocket server;
MaxChat(String titel)
{
super(titel);
chat=new JTextArea(500, 100);
chat.setEditable(false);
eingabe=new JTextField(200);
Box box=Box.createVerticalBox();
box.add(chat);
box.add(eingabe);
add(box);
try
{
server=new ServerSocket(1234);
empfang=new Thread(this);
empfang.start();
s=new Socket(InetAddress.getByName("Joachim").getHostAddress(), 1234);
}
catch(Exception e)
{
System.err.println(e);
}
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
eingabe.addKeyListener(new KeyLauscher());
}
class KeyLauscher extends KeyAdapter
{
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode()==KeyEvent.VK_ENTER)
{
if(eingabe.getText()!=null)
{
try
{
s=new Socket(InetAddress.getByName("Joachim").getHostAddress(), 1234);
PrintWriter ausgabe=new PrintWriter(s.getOutputStream());
ausgabe.write(eingabe.getText()+"\n");
ausgabe.flush();
ausgabe.close();
chat.append("\nGonzo: "+eingabe.getText());
eingabe.setText("");
}
catch(Exception i)
{
System.err.println(i);
}
}
}
}
}
public void run()
{
try
{
Socket accept=server.accept();
InputStream input=accept.getInputStream();
BufferedReader r=new BufferedReader(new InputStreamReader(input));
while(true)
{
String eingabe=r.readLine();
if(eingabe!=null)
{
chat.append("\nJoachim: "+eingabe);
}
}
}
catch(Exception e)
{
System.err.println(e);
}
}
public static void main(String[] args)
{
MaxChat fenster=new MaxChat("MaxChat");
fenster.pack();
fenster.setVisible(true);
}
}
Habs auch schon mit zwei parallelen Threads für "Server-" und "Clientteil" meines Programms versucht, ist aber genau dasselbe rausgekommen.
Bin auf dem Gebiet noch ziemlicher Anfänger, kann also sein, dass das hier totaler Müll ist.