Socket Probleme mit einfacher Socketverbindung

montana

Neues Mitglied
Hallo,
Als Hausaufgabe muss ich ein einfaches server-Programm schreiben das Verbindungsanfragen
über TCP entgegen nimmt und eine übermittelte Zahl um eins inkrementiert und zusammen mit einem Zufalls String zurückgibt. Außerdem soll das Programm in der Lage sein mehrere Clients gleichzeitig zu bedienen.
Leider macht mein Programm nicht zu 100% das was ich von ihm erwarte und ich finde den Fehler einfach nicht.
Wäre nett wen hier mal jemand drüber gucken könnte.

Code:
import java.io.*;
import java.net.*;

public class RandomClient 
{

	public static final int PORT = 4432;
	public static final String HOST = "127.0.0.1"; 



	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException 
	{

		einlesen();
		Socket socket = new Socket(HOST, PORT);
		PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
		BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
		String userInput;
		while((userInput = String.valueOf(einlesen())) != null)
		{
			out.println(userInput);
			System.out.println(in.readLine());
		}

		socket.close();
		out.close();
		in.close();


	}
	
	/**
	 * Liest einen Integerwert von der konsole ein
	 * @return den eingegebene Int Wert
	 * @throws IOException
	 */
	private static int einlesen() throws IOException 
	{
		InputStreamReader input = new InputStreamReader(System.in);
		BufferedReader reader = new BufferedReader(input);
		int i = 0;
		System.out.print("Zahl eingeben: ");

		try
		{
			i = Integer.parseInt(reader.readLine());
		}
		catch (NumberFormatException e)
		{
			System.out.println("Bitte nur Zahlenwerte");

		}
		return i;
	}

}

Code:
import java.io.*;
import java.net.*;

/**
 * Das Server Programm
 * @author master
 *
 */
public class RandomServer 
{

	public static final int PORT = 4432;


	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException 
	{
		// TODO Auto-generated method stub
		ServerSocket serverSocket = new ServerSocket(PORT);
		ServerThread serverThread = null;
		Socket socket = null;

		while(true)
		{
			socket = serverSocket.accept();

			serverThread = new ServerThread(socket);
		}
	}

}


Code:
import java.io.*;
import java.net.*;

public class ServerThread extends Thread
{

	private Socket socket = null;

	public ServerThread(Socket socket) 	
	{
		this.socket = socket;
		this.start();
	}

	public static String zufallsStringErzeugen()
	{

		String zufallsString = "";
		MeinRandom random = new MeinRandom();
		int anzahl = random.nextInt(1, 20);

		for(int i =1;anzahl >= i; i++){
			char pass = (char)random.nextInt(65,90);
			/*System.out.println(i + pass);*/
			zufallsString = zufallsString + String.valueOf(pass);
		}

		return zufallsString;
	}

	public void run()
	{
		try
		{
			BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true);
			String line;
			while((line = in.readLine()) != null)
			{
				int i = Integer.parseInt(line);
				i++;
				out.println(zufallsStringErzeugen() + i);
			}
			out.close();
			socket.close();
			in.close();
			//serverSocket.close();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}	
	}	
}

Teilweise funktioniert das Programm aber die erste anfrage wird vom Server nicht beantwortet, jede weitere dann schon.
Außerdem bekomme ich eine exception

Code:
java.net.SocketException: Connection reset
        at java.net.SocketInputStream.read(Unknown Source)
        at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
        at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
        at sun.nio.cs.StreamDecoder.read(Unknown Source)
        at java.io.InputStreamReader.read(Unknown Source)
        at java.io.BufferedReader.fill(Unknown Source)
        at java.io.BufferedReader.readLine(Unknown Source)
        at java.io.BufferedReader.readLine(Unknown Source)
        at ServerThread.run(ServerThread.java:38)
 

Kr0e

Gesperrter Benutzer
Hast du ein Glück :D War grad in der Stimmung dir mal was zu basteln...
Sollte voll funktionsfähig sein...

Der Client:
Java:
package com;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;

/**
 *
 * @author Christopher Probst
 */
public class Client {

    public static final int PORT = 4432;
    public static final String HOST = "127.0.0.1";

    public static void main(String[] argv) throws IOException {
        //Socket öffnen und verbinden
        Socket socket = new Socket(HOST, PORT);

        //Data stream öffnen...
        DataInputStream dis = new DataInputStream(socket.getInputStream());

        //Iwie muss das ja auch wieder raus...
        DataOutputStream dos = new DataOutputStream(socket.getOutputStream());

        //Hier speichern wir gleich die Zahl
        int zahl;

        //Einlesen und einfach als 4-Byte int verschicken!
        dos.writeInt(zahl = einlesen());

        //Nun das Resultat einlesen
        int umEinsErhoehteZahl = dis.readInt();

        //String es fehlt noch der Zufallstring!
        String totalZufaelligerString = dis.readUTF();

        //Reicht aus! Alle Stream werden intern geschlossen!
        socket.close();

        //Noch kurz nen schlauen Kommentar auf der Konsole ausgeben...
        System.out.println("Alte Zahl: " + zahl
                + " | Empfangene Zahl: " + umEinsErhoehteZahl
                + " | Zufälliger String: " + totalZufaelligerString);
    }

    /**
     * Liest einen Integerwert von der konsole ein
     * @return den eingegebene Int Wert
     * @throws IOException
     */
    private static int einlesen() throws IOException {
        InputStreamReader input = new InputStreamReader(System.in);
        BufferedReader reader = new BufferedReader(input);
        int i = 0;
        System.out.print("Zahl eingeben: ");

        try {
            i = Integer.parseInt(reader.readLine());
        } catch (NumberFormatException e) {
            System.out.println("Bitte nur Zahlenwerte");

        }
        return i;
    }
}

Der Server:
Java:
package com;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.UUID;

/**
 *
 * @author Christopher Probst
 */
public class Server {

    public static final int PORT = 4432;

    private static final class ClientWorker implements Runnable {

        //Der socket...
        private final Socket socket;
        private final DataOutputStream dos;
        private final DataInputStream dis;

        public ClientWorker(Socket socket) throws IOException {
            this.socket = socket;

            //Output
            dos = new DataOutputStream(socket.getOutputStream());

            //Input
            dis = new DataInputStream(socket.getInputStream());

            //Thread erstellen und starten
            new Thread(this).start();
        }

        @Override
        public void run() {

            try {
                //Ursprung einlesen
                int ursprung = dis.readInt();
                
                //Erhöhen um 1
                ursprung++;
                
                //Ist wirklich schon super zufaellig...
                String zufaelligerGehtsNicht = UUID.randomUUID().toString();
                
                //Zurück schicken aber diesmal + 1
                dos.writeInt(ursprung);
                
                //Den string noch schnell als utf schicken
                dos.writeUTF(zufaelligerGehtsNicht);
                
                //Brav alles schliessen
                socket.close();
            } catch (IOException e) {
                //Soll ja ab und an mal vorkommen :D
                e.printStackTrace();
            }
        }
    }

    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        ServerSocket serverSocket = new ServerSocket(PORT);

        while (true) {
            //Eine Zeile ... :D
            new ClientWorker(serverSocket.accept());
        }
    }
}

Fertig!


Nutze das alles nach freiem Belieben ;)

Gruß,

Chris
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Probleme bei Java-Installation auf Server (Linux/Shell/Terminal) Netzwerkprogrammierung 6
platofan23 Probleme mit Socket bei Android Studio? Netzwerkprogrammierung 22
J Probleme mit Multicast über IPv6, DatagramChannel Netzwerkprogrammierung 1
Niggo_ Probleme mit Java Mail Netzwerkprogrammierung 14
F Probleme mit Connection Reset bei Telnet Verbindung Netzwerkprogrammierung 1
K Probleme bei HTML-Mail-Abruf mit IMAP bei 1und1 Netzwerkprogrammierung 2
L Socket SSLServer Probleme Netzwerkprogrammierung 0
H Probleme mit UDP Netzwerkprogrammierung 0
F Server/Client Probleme Netzwerkprogrammierung 3
R Probleme mit JMS Netzwerkprogrammierung 1
A Probleme beim Klassen-Import von sun.misc. ... Netzwerkprogrammierung 19
M RMI RMI Probleme zwischen Client und Server Netzwerkprogrammierung 5
B Probleme beim ersten Netzwerkprogramm Netzwerkprogrammierung 3
M Probleme mit FTP Netzwerkprogrammierung 19
windl URLConnection unter 1.7 macht Probleme Netzwerkprogrammierung 14
Z Socket Probleme beim Senden und Empfangen Netzwerkprogrammierung 5
Z Probleme beim Senden von Nachrichten an den Server Netzwerkprogrammierung 9
Maxim6394 Probleme bei Messenger Netzwerkprogrammierung 16
I Socket UDP Hole Punching bereitet Probleme Netzwerkprogrammierung 14
C Socket Probleme beim Lesen und Schreiben aus/in einen Socket Netzwerkprogrammierung 2
S HTTP Probleme mit POST-Befehl Netzwerkprogrammierung 2
R FTPS - Probleme mit FTPSClient Netzwerkprogrammierung 2
S Probleme mit XMLEncoder/XMLDecoder Netzwerkprogrammierung 2
D Server - Client Probleme Netzwerkprogrammierung 9
Weiti HTTP Zertifikat-Probleme - InstallCert.java Netzwerkprogrammierung 2
H Probleme mit GUI (RMI) Netzwerkprogrammierung 6
T RMI Probleme mit RMI-Server Netzwerkprogrammierung 4
J Probleme bei RSA mit byte[] bei Versand über RMI Netzwerkprogrammierung 2
T FTP Probleme mit Passiv und Binary Mode Netzwerkprogrammierung 3
J Probleme mit Threads (Client terminiert) Netzwerkprogrammierung 4
S Socket SocketServer und Client machen Probleme Netzwerkprogrammierung 6
B Server / Client Anwendung, Client GUI Probleme Netzwerkprogrammierung 11
F RMI probleme Netzwerkprogrammierung 3
D Probleme bei mehreren Clients uns Senden von Messages Netzwerkprogrammierung 16
E jPcap Probleme Netzwerkprogrammierung 3
B HTTP Probleme mit HttpClient? Netzwerkprogrammierung 2
T Probleme mit Jpcap Netzwerkprogrammierung 18
P Probleme mit OutputStream Netzwerkprogrammierung 7
P Probleme beim weiter senden von Datein Netzwerkprogrammierung 10
B Probleme mit FTP verbindung Netzwerkprogrammierung 22
L Probleme bei Chatserver Netzwerkprogrammierung 6
A Probleme mit kleinem Netzwerk Programm Netzwerkprogrammierung 30
S Probleme beim senden von Daten per POST Methode an PHP Scrip Netzwerkprogrammierung 5
G Probleme mit SecruityManager + RMI Netzwerkprogrammierung 10
derMartin Probleme mit NNTP Client Netzwerkprogrammierung 2
A Probleme mit Citrix Netzwerkprogrammierung 17
A Probleme mit kleinem Messenger-Programm Netzwerkprogrammierung 4
K RXTXcomm : Install - Probleme Netzwerkprogrammierung 7
R Probleme mit UDP Netzwerkprogrammierung 4
P Probleme bei Chat programm Netzwerkprogrammierung 2
I Probleme mit 'JSSE Samples' von Sun Netzwerkprogrammierung 5
T RMI - Probleme beim Starten des Clients Netzwerkprogrammierung 4
E InetAddress Klasse-Probleme Netzwerkprogrammierung 4
M dateien übertragen, probleme mit versch. Strömen? Netzwerkprogrammierung 4
R Rechte Probleme bei Applets Netzwerkprogrammierung 16
D EA-Exception Network Adapter macht probleme Netzwerkprogrammierung 2
G Probleme mit Firewall beim empfangen von dateien über socket Netzwerkprogrammierung 6
P Probleme mit Input- / Output-Streams Netzwerkprogrammierung 2
V probleme mit dem chat programm Netzwerkprogrammierung 4
F WLAN Probleme (CLIENT-SERVER) Netzwerkprogrammierung 4
J Probleme mit ObjectOutputStream! Netzwerkprogrammierung 15
S Probleme beim Beschränken der Geschwindigkeit Netzwerkprogrammierung 6
M Probleme beim Abfangen von Streams Netzwerkprogrammierung 5
G Fragen/Probleme mit JavaMail Netzwerkprogrammierung 2
N Java-Chat (lauffähig) macht Probleme auf der Konsole Netzwerkprogrammierung 6
P Probleme mit einem Array aus Sockets Netzwerkprogrammierung 2
C Probleme bei Dateiupload mit socket Netzwerkprogrammierung 4
T FTP Chatprogramm probleme Netzwerkprogrammierung 2
C RMI Probleme mit iptables Netzwerkprogrammierung 2
D socket exception + timing probleme Netzwerkprogrammierung 2
G Probleme bei Proxy-Server! Netzwerkprogrammierung 5
S Probleme mit HttpURLConnection Netzwerkprogrammierung 10
D Habe 2 Probleme: Input eingabe und Multi Socket Server Netzwerkprogrammierung 2
H Einfacher Server funktioniert nicht Netzwerkprogrammierung 1
A Socket Wie ein einfacher Multithreads Service mit Telnet als Client mit Observable/Observer gelöst.... Netzwerkprogrammierung 0
B Einfacher Server mit Jetty Netzwerkprogrammierung 3
F RMI einfacher Chat - Callbacks(?) funktionieren nicht Netzwerkprogrammierung 7
D Apache CXF, JAX-WS Problem bei Arrays - einfacher Server Netzwerkprogrammierung 2
S Socket Einfacher filetransfer Netzwerkprogrammierung 10
B Einfacher Proxy Server Netzwerkprogrammierung 29
L einfacher server ohne threads Netzwerkprogrammierung 4
P Einfacher Server/Client Netzwerkprogrammierung 5
L Einfacher Proxy-Server Netzwerkprogrammierung 6
A einfacher Transfer mit Applets Netzwerkprogrammierung 4
C Einfacher Filedownload mit Sockets geht nicht für pdffiles Netzwerkprogrammierung 16
T Einfacher Servlet-Server Netzwerkprogrammierung 8
S Einfacher Multiuser chat in java Netzwerkprogrammierung 18
V erste Client - Server Anwendung, paar Fragen wie Socketverbindung checken usw. Netzwerkprogrammierung 4
F Verständnisfrage Verfügbarkeit Socketverbindung Netzwerkprogrammierung 5
E Socketverbindung über das Internet - Timeout? Netzwerkprogrammierung 28
reibi Socket Socketverbindung nutzt welches Protokoll? Netzwerkprogrammierung 5
L Socket Socketverbindung nur im lokalen Netzwerk Netzwerkprogrammierung 12
Q Problem bei Vergleichen von Strings übertragen über eine Socketverbindung Netzwerkprogrammierung 3
J Socketverbindung zwischen Javaclient und C-Server Netzwerkprogrammierung 11
IT-MaD konstante Socketverbindung mit Verbindungscheck u. reconnect Netzwerkprogrammierung 5
M Socketverbindung funzt nich immer Netzwerkprogrammierung 3
0 Socketverbindung zwischen PHP und Java? Netzwerkprogrammierung 6
P Array per Socketverbindung versenden Netzwerkprogrammierung 2
D Socketverbindung schlägt fehl - Connection refused: connect Netzwerkprogrammierung 4
S Socketverbindung übers WWW Netzwerkprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben