Ich habe es nun endlich, dank der kräftigen Unterstützung aus diesem Forum, geschafft das Programm soweit zu entwickeln:
Server
Client
Ich hoffe das ist so weit verständlich.
Der Client hat die Funktionen des Servers der Einfachheit halber noch nicht.
Jetzt wäre meine Frage:
Wenn ich zuerst den Server dann den Client starte, printet das System null aus.
Das ist ja auch verständlich da noch nichts im Textfield steht.
Wenn ich aber dann etwas reinschreibe und dann nochmals den Button anklicke.
Kommt der geschriebene Text nicht mehr auf der anderen Seite an.
Wie kann ich das ändern?
Server
Java:
import java.net.*;
import java.awt.Button;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
public class KleinerServer{
ServerSocket server = new ServerSocket( 1234);
static Button b1;
static String str;
static PrintWriter p;
KleinerServer() throws IOException {
while(true) {
Socket client = server.accept();
BufferedReader br = new BufferedReader(new InputStreamReader (client.getInputStream()));
p = new PrintWriter(client.getOutputStream());
//schreiben
p.println(str);
//lesen
String x = br.readLine();
System.out.print(x);
p.flush();
br.close();
p.close();
}
}
public static void main (String [] args)
{
Frame f = new Frame();
f.setLayout( new FlowLayout() );
b1 = new Button("GetText");
final TextField tf = new TextField();
tf.setPreferredSize(new Dimension(80, 30));
f.add(b1);
f.add(tf);
ActionListener al = new ActionListener() {
public void actionPerformed( ActionEvent ae ) {
str = tf.getText();
}
};
b1.addActionListener( al );
f.pack();
f.setVisible(true);
try {
@SuppressWarnings("unused")
KleinerServer server = new KleinerServer();
} catch (IOException e) {
System.out.print(e);
}
}
}
Client
Java:
import java.net.*;
import java.io.*;
public class Client {
Client() throws IOException {
Socket server = new Socket ("localhost", 1234);
BufferedReader br = new BufferedReader(new InputStreamReader (server.getInputStream()));
PrintWriter p = new PrintWriter(server.getOutputStream());
p.println("HI");
p.flush();
String x = br.readLine();
System.out.print(x);
server.close();
br.close();
p.close();
}
public static void main(String[] args) {
try{
Client client = new Client();
}catch (IOException e) {
System.out.print(e);
}
}
}
Ich hoffe das ist so weit verständlich.
Der Client hat die Funktionen des Servers der Einfachheit halber noch nicht.
Jetzt wäre meine Frage:
Wenn ich zuerst den Server dann den Client starte, printet das System null aus.
Das ist ja auch verständlich da noch nichts im Textfield steht.
Wenn ich aber dann etwas reinschreibe und dann nochmals den Button anklicke.
Kommt der geschriebene Text nicht mehr auf der anderen Seite an.
Wie kann ich das ändern?
Zuletzt bearbeitet: