Hallo,
Ich habe mich hier mal angemeldet da ich bei meinem momentanen Projekt nicht mehr weiter komme. Vorerst will gesagt sein das ich schon Erfahrung im Programmieren habe und auch schon in VB6 (zimlich gut & ausführlich) und C++ (nur Basics) gemacht habe.
Momentan bin ich aber am Java lernen und möchte für ein Abschlussprojekt einen Netzwerk-Chat schreiben. Dieser soll vorerst nur auf Client-Client Basis funktionieren.
Hier mein bisheriger Sourcecode dazu:
Server:
Class Chat
Der Verbindungsaufbau zwischen Server und Client funktioniert Problemlos und ich kann sobald die Verbindung steht vom Client auch einen Nachricht zum Server schicken welche dann per Konsole ausgegeben wird. Das Problem hierbei ist aber das ich nur eine Nachricht schicken kann. Danach müssen Server und Client wieder neugestartet und neu Verbunden werden damit der Server eine weitere Nachricht ausgibt.
Ein weiteres Problem bei welchem ich nicht weis wie ich es realisieren soll ist, dass der Server ebenfalls Nachrichten an den Client schicken kann. Hierfür habe ich
[Java]
text = input.readLine();
System.out.println(text);
[/Java]
im Client in die try {} funktion eingebaut. Hierdurch hängt sich der Client aber scheinbar in einer Endlosschleife auf sodas kein Button mehr gedrückt werden kann, sodass der Client auch keine Nachrichten mehr sendnen kann.
Hätte jemand von euch eine Idee wie ich das Problem lösen könnte? Ich hoffe ich habe es ausfürhlich genug beschrieben, wenn nicht bitte nachfragen
Greetz bi0x
Ich habe mich hier mal angemeldet da ich bei meinem momentanen Projekt nicht mehr weiter komme. Vorerst will gesagt sein das ich schon Erfahrung im Programmieren habe und auch schon in VB6 (zimlich gut & ausführlich) und C++ (nur Basics) gemacht habe.
Momentan bin ich aber am Java lernen und möchte für ein Abschlussprojekt einen Netzwerk-Chat schreiben. Dieser soll vorerst nur auf Client-Client Basis funktionieren.
Hier mein bisheriger Sourcecode dazu:
Server:
Java:
package chatserver;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
public class ChatServerframe extends javax.swing.JFrame {
ServerSocket server = null;
Socket connect = null;
BufferedReader input = null;
PrintStream output = null;
public ChatServerframe() {
initComponents();
}
private void buconActionPerformed(java.awt.event.ActionEvent evt) {
Chat session = new Chat();
session.start();
if(bucon.isEnabled()==true){
bucon.disable();
}
else{
System.exit(0);
}
}
private void busendActionPerformed(java.awt.event.ActionEvent evt){
if(connect != null && output != null){
output.print(text1.getText());
output.close();
}
}
}
Class Chat
Java:
public class Chat extends Thread {
ServerSocket server = null;
Socket connect = null;
BufferedReader input = null;
PrintStream output = null;
int port = 1234;
String inputtext = null;
String outputtext = "textzurückvon0";
public void run(){
try {
server = new ServerSocket(port);
System.out.println("Abhöhren");
while(true){
connect = server.accept();
System.out.println("Connection established to "+connect.getInetAddress());
input = new BufferedReader(new InputStreamReader(connect.getInputStream()));
output = new PrintStream(connect.getOutputStream());
inputtext = input.readLine();
System.out.println(inputtext);
output.println("Empfangen");
output.flush();
}
}
catch(IOException ioe){
System.out.println("Serverfehler: "+ioe.getMessage());
}
}
[/Java]
Client:
[code=Java]
public class ChatClientframe extends javax.swing.JFrame {
Socket connect = null;
BufferedReader input = null;
PrintStream send = null;
String text = null;
public ChatClientframe() {
initComponents();
}
private void buconActionPerformed(java.awt.event.ActionEvent evt) {
try{
connect = new Socket("127.0.0.1",1234);
input = new BufferedReader(new InputStreamReader(connect.getInputStream()));
send = new PrintStream(connect.getOutputStream());
text = input.readLine();
System.out.println(text);
}
catch(UnknownHostException e){
System.out.println("Host unknown.");
}
catch (IOException ioe){
System.out.println("Clientfehler: "+ioe.getMessage());
}
}
private void busendActionPerformed(java.awt.event.ActionEvent evt){
send.print("Test");
send.close();
}
Der Verbindungsaufbau zwischen Server und Client funktioniert Problemlos und ich kann sobald die Verbindung steht vom Client auch einen Nachricht zum Server schicken welche dann per Konsole ausgegeben wird. Das Problem hierbei ist aber das ich nur eine Nachricht schicken kann. Danach müssen Server und Client wieder neugestartet und neu Verbunden werden damit der Server eine weitere Nachricht ausgibt.
Ein weiteres Problem bei welchem ich nicht weis wie ich es realisieren soll ist, dass der Server ebenfalls Nachrichten an den Client schicken kann. Hierfür habe ich
[Java]
text = input.readLine();
System.out.println(text);
[/Java]
im Client in die try {} funktion eingebaut. Hierdurch hängt sich der Client aber scheinbar in einer Endlosschleife auf sodas kein Button mehr gedrückt werden kann, sodass der Client auch keine Nachrichten mehr sendnen kann.
Hätte jemand von euch eine Idee wie ich das Problem lösen könnte? Ich hoffe ich habe es ausfürhlich genug beschrieben, wenn nicht bitte nachfragen
Greetz bi0x