Hallo!
Ich habe ein kleines Programm geschrieben um die Funktion von Threads und Sockets zu verstehen!
Und zwar gibt es eine main-class die die Threads erzeugt.
eine weitere Klasse ist der Server der auf einem Port auf die Client Anfragen hört!
die client Klasse soll Anfragen an den Server stellen können und dann eine Antwort erhalten. Und zwar sollen per Tastatur 2 Zahlen eingegeben werden, die dann zum Server geschickt werden, der sie zusammenzählt und ausgibt. Das funktioniert auch ganz gut, nur das Problem ist, dass ich nach der Ausgabe wieder zur Eingabe der nächsten 2 Zahlen kommen sollte und ich weiß nicht wie ich das hinkriege. Ich kann also immer eine Rechnung pro Programmstart durchführen!
Ich verwende 2 Threads da der eine immer auf einem Port auf Anfragen warten muss und beim anderen sollen die Eingaben gemacht werden. Es soll nach einer Rechenoperation wieder zum Eingabe-Thread gewechselt werden.
Ich habe ein kleines Programm geschrieben um die Funktion von Threads und Sockets zu verstehen!
Und zwar gibt es eine main-class die die Threads erzeugt.
Code:
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class lightarray {
/**
* @param args
*/
public static void main(String[] args){
Thread t1 = new Thread( new server() );
t1. start();
Thread t2 = new Thread( new client() );
t2. start();
}
}
eine weitere Klasse ist der Server der auf einem Port auf die Client Anfragen hört!
Code:
import java.net.*;
import java.io.*;
class server implements Runnable{
/**
* @param args
*/
public void run() {
try{
ServerSocket server = new ServerSocket(1234);
while(true){
Socket client = server.accept();
InputStream input = client.getInputStream();
OutputStream output = client.getOutputStream();
int zahl1=input.read();
int zahl2=input.read();
output.write(zahl1 + zahl2);
output.flush();
System.out.println(input.read());
System.out.println(input.read());
server.close();
input.close();
output.close();
}
}catch (IOException e){
System.out.print(e);
}
}
}
die client Klasse soll Anfragen an den Server stellen können und dann eine Antwort erhalten. Und zwar sollen per Tastatur 2 Zahlen eingegeben werden, die dann zum Server geschickt werden, der sie zusammenzählt und ausgibt. Das funktioniert auch ganz gut, nur das Problem ist, dass ich nach der Ausgabe wieder zur Eingabe der nächsten 2 Zahlen kommen sollte und ich weiß nicht wie ich das hinkriege. Ich kann also immer eine Rechnung pro Programmstart durchführen!
Code:
import java.net.*;
import java.io.*;
public class client implements Runnable{
/**
* @param args
*/
int x,y;
public void run() {
while(true){
try{
Socket server = new Socket("localhost", 1234);
InputStream input = server.getInputStream();
OutputStream output = server.getOutputStream();
BufferedReader myInput = new BufferedReader(new InputStreamReader(System.in));
System.out.print("x: ");
x = Integer.parseInt(myInput.readLine());
System.out.print("y: ");
y = Integer.parseInt(myInput.readLine());
output.write(x);
output.write(y);
output.flush();
System.out.println(input.read());
System.out.println(input.read());
server.close();
input.close();
output.close();
}catch (IOException e){
System.out.print(e);
}
}
}
}
Ich verwende 2 Threads da der eine immer auf einem Port auf Anfragen warten muss und beim anderen sollen die Eingaben gemacht werden. Es soll nach einer Rechenoperation wieder zum Eingabe-Thread gewechselt werden.