Erste Schritte Erste Versuche mit Server und Client

loop_

Mitglied
Hey Leute,

ich habe die Frage zwar schon wo anders gestellt, jedoch noch nicht in einem richtigen Java Forum. Vielleicht könnt ihr mir helfen. Ich versuche mich gerade an einer Übung. Jedoch weiß ich nicht, ob ich sie gelöst habe oder nicht. Zur Aufgabe, ich soll in Java einen Server und einen Clienten simulieren. Der Dialog soll wie folgt sein:

http://matheplanet.com/matheplanet/...463_Bildschirmfoto_2016-12-08_um_17.32.35.png

Dazu habe ich zwei Klassen geschrieben (s.u.). Leider weiß ich gar nicht, wie ich nun teste, ob der Dialog auch klappt. Ich habe nur eine Anleitung in Koreanisch dabei (befinde mich momentan in Seoul) die mir erklären soll, wie ich das mit der Windows Konsole testen kann. Ich selber kann kein Koreanisch und habe einen Mac. Von daher echt gute Voraussetzungen.

Es wäre nett, wenn mal jemand drüber schauen könnte über die beiden Klassen:

import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import java.util.Scanner; public class ServerSource { static ArrayList<Integer> numbers = new ArrayList<Integer>(); public static void main(String[] args) { ServerSocket serverSocket = null; Socket socket = null; try { serverSocket = new ServerSocket(5555); socket = serverSocket.accept(); Scanner kyb = new Scanner(socket.getInputStream()); PrintWriter out = new PrintWriter(socket.getOutputStream()); out.println("How many numbers?"); out.flush(); int numb = kyb.nextInt(); out.println("Input " + numb + " lines:"); out.flush(); while (numb > 0) { numbers.add(kyb.nextInt()); numb--; } out.println("Sum: " + sum()); out.flush(); out.println("Avg: " + avg()); out.flush(); } catch (Exception e) { System.out.println(e.getMessage()); } finally { try { socket.close(); } catch (Exception e) { System.out.println(e.getMessage()); } try { serverSocket.close(); } catch (Exception e) { System.out.println(e.getMessage()); } } } public static int sum() { int sum = 0; for (int i = 0; i <= numbers.size(); i++) { sum = sum + numbers.get(i); } return sum; } public static double avg() { return sum() / numbers.size(); } } [\iCode] [iCode] import java.io.PrintWriter; import java.net.Socket; import java.util.Scanner; public class ClientSource { public static void main(String[] args) { Socket socket = null; try { socket = new Socket("10.210.17.189", 5555); Scanner in = new Scanner(System.in); PrintWriter out = new PrintWriter(socket.getOutputStream()); out.println("Hello?"); out.flush(); String strIn = in.nextLine(); out.println(strIn); } catch (Exception e) { System.out.println(e.getMessage()); } finally { try { socket.close(); } catch (Exception e) { System.out.println(e.getMessage()); } } } } Sorry hab leider nicht herausgefunden, wo man hier den Code einfügt. [\iCode] lg, loop_
 
Zuletzt bearbeitet:
Hallo loop_ und Willkommen im Java-Forum 🙂

Poste deinen Code bitte in [code=Java] MY CODE [/code] Tags 🙂

Danke
Gruß
Robert
 
@Kababär
Ich mach das immer mit dem iCode Tag. .. 🙂 gibt wohl auch eine Möglichkeit mit einem Plaintag aber das hab ich noch nicht raus gefunden 😛

@loop_
In deinem Editor gibt es in der Toolbar auch neben dem Diskettensymbol ein Button, mit dem du den Code einfügen kannst. Einfach die Sprache auswählen die du hast (also in dem Fall Java) 🙂

Dein Programm kannst du Testen, indem du beide .java Dateien ausführst (jeweils in einem Terminal).
Wenn du das über die Komandozeile machen willst dann sollte das bei Mac ca so aussehen:

~quick'n'dirty
Code:
cd path/to/files/../
javac HelloWorld.java             --> compilieren
java HelloWorld                      --> ausführen
 
Zuletzt bearbeitet:
Hey danke erstmal für die ganzen Antworten. Habe das ganze übers Terminal ausgeführt, kriege aber immer 'null' als aussage. woran kann das liegen?
PS: wie kann ich meinen Beitrag bearbeiten?
 
Okay zwei Aussagen, die ich hier als neuling zu machen habe. Als erstes kann ich anscheinend meinen Startbeitrag nicht mehr ändern. Also hier mein Code:

Server:
Java:
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Scanner;

public class ServerSource {
    static ArrayList<Integer> numbers = new ArrayList<Integer>();
    public static void main(String[] args) {
        ServerSocket serverSocket = null;
        Socket socket = null;
        try {

            serverSocket = new ServerSocket(5555);

            socket = serverSocket.accept();

           

            Scanner kyb = new Scanner(socket.getInputStream());

            PrintWriter out = new PrintWriter(socket.getOutputStream());

            out.println("How many numbers?");

            out.flush();

            int numb = kyb.nextInt();

            out.println("Input " + numb + " lines:");

            out.flush();

            while (numb > 0) {

                numbers.add(kyb.nextInt());

                numb--;

            }



            out.println("Sum: " + sum());

            out.flush();

            out.println("Avg: " + avg());

            out.flush();



        } catch (Exception e) {

            System.out.println(e.getMessage());

        } finally {

            try {

                socket.close();

            } catch (Exception e) {

                System.out.println(e.getMessage());

            }

            try {

                serverSocket.close();

            } catch (Exception e) {

                System.out.println(e.getMessage());

            }

        }



    }



    public static int sum() {

        int sum = 0;

        for (int i = 0; i <= numbers.size(); i++) {

            sum = sum + numbers.get(i);

        }

        returnsum;

    }

    public static double avg() {

        return sum() / numbers.size();
    }
}

Client:
Java:
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;

public class ClientSource {

    public static void main(String[] args) {

        Socket socket = null;

        try {
            socket = new Socket("10.210.17.189", 5555);
            Scanner in = new Scanner(System.in);
            PrintWriter out = new PrintWriter(socket.getOutputStream());

            out.println("Hello?");
            out.flush();

            String strIn = in.nextLine();
            out.println(strIn);

        } catch (Exception e) {
            System.out.println(e.getMessage());
        } finally {
            try {
                socket.close();
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
        }
    }
}


Zweitens: Per E-Mail bekomm eich immer die Meldung meinen Code als "
CODE " zu erklarieren. Was aber anscheinend nicht richtig ist.
 

Zurück
Oben