Server Client Verbindung halten ,wie?

  • Themenstarter Themenstarter tho
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
T

tho

Gast
Hallo ich habe eine Mini Chat gebaut zur Übung.
Ich baue aber jedesmal wenn ich ne Nachricht geschickt habe
wieder ne neue Verbindung auf. Kann man, wenn man mit
sock.accept ne Verbindung hergstellt hat, die Verbindungen
mit dem Client halten? So das ich immer über den output Stream ne weiter neue Nachricht rüberschicken kann ohne ne neue Verbindung aufzubauen??? Wie macht man das?

Code:
// Der Server

import java.io.*;
import java.net.*;
import java.util.Scanner;

public class Server {
    private ServerSocket sock;
    
    public Server(int port) {
        
        try{
            sock = new ServerSocket(1234);
            System.out.println("Der Server ist gestartet!");
            System.out.println("warten auf Client...");
            
        }catch (IOException e){
            System.out.println(e);
            System.exit(1);
        }
        
        Socket client = null;
        try{
            while(true){
                client = sock.accept();
                PrintStream out = new PrintStream(client.getOutputStream(), true);
                Scanner scIn = new Scanner(System.in);
                System.out.println("Bitte geben sie den Sendetext ein:");
                out.print(scIn.nextLine());
                
                out.close();
                client.close();
            }
        }catch (IOException e){
            System.out.println(e);
            System.exit(1);
        }
    }

    public static void main(String[] args) {
       Server myServer = new Server(1234);
    }
    
}

// Der Client
import java.io.*;
import java.net.*;

public class Client {
    
    
    public Client(String hostName, int port) {
        
        try{
           while(true){
                Socket connection = new Socket(hostName,port); 
                
                BufferedReader in = new BufferedReader(new
                InputStreamReader(connection.getInputStream()));
                System.out.println(in.readLine());

                in.close();
           }
        }catch (IOException e){
            System.out.println(e);
            System.exit(1);
        }
    }
    
    public static void main(String[] args) {
        Client myClient = new Client("localhost",1234);
    }
    
}

mfg thomas
 
einfach in.close() NICHT ausführen 😉
sondern den geöffneten Socket speichern

anschauliche Beispiele fallen mir im Moment keine ein,

aber wenn du entsprechene Kapitel in Lehrbüchern liest oder mal bei google nach Socket-Programmen suchst,
dann muss doch was dabei sein,
 
Wie meinst du das Socket speichern? Bzw wie speichert man den?
Habe das mal so umgeschrieben:
funtzt aber nicht wirklich. bei server tippe ich jetzt ne nachricht ein aber die kommt nicht mehr beim Client an.

Code:
//Server
import java.io.*;
import java.net.*;
import java.util.Scanner;

public class Server {
    private ServerSocket sock;
    
    public Server(int port) {
        
        try{
            sock = new ServerSocket(1234);
            System.out.println("Der Server ist gestartet!");
            System.out.println("warten auf Client...");
            
        }catch (IOException e){
            System.out.println(e);
            System.exit(1);
        }
        
        Socket client = null;
        try{
            
                client = sock.accept();
          while(true){
                PrintStream out = new PrintStream(client.getOutputStream(), true);
                Scanner scIn = new Scanner(System.in);
                System.out.println("Bitte geben sie den Sendetext ein:");
                out.print(scIn.nextLine());
                
                //out.close();
                //client.close();
            }
        }catch (IOException e){
            System.out.println(e);
            System.exit(1);
        }
    }

    public static void main(String[] args) {
       Server myServer = new Server(1234);
    }
    
}

//Client
import java.io.*;
import java.net.*;

public class Client {
    
    
    public Client(String hostName, int port) {
        
        try{
           //while(true){
                Socket connection = new Socket(hostName,port); 
                while(true){
                BufferedReader in = new BufferedReader(new
                InputStreamReader(connection.getInputStream()));
                System.out.println(in.readLine());

                //in.close();
           }
        }catch (IOException e){
            System.out.println(e);
            System.exit(1);
        }
    }
    
    public static void main(String[] args) {
        Client myClient = new Client("localhost",1234);
    }
    
}

danke schon mal im voraus. Werde auch gleich nochmal googeln

mfg
 
Habe meinen Fehler endlich danke :lol:

so geht das jetzte:

Code:
//Server
import java.io.*;
import java.net.*;
import java.util.Scanner;

public class Server {
    private ServerSocket sock;
    
    public Server(int port) {
        
        try{
            sock = new ServerSocket(1234);
            System.out.println("Der Server ist gestartet!");
            System.out.println("warten auf Client...");
            
        }catch (IOException e){
            System.out.println(e);
            System.exit(1);
        }
        
        Socket client = null;
        try{
            
            client = sock.accept();
            System.out.println("Mit Client: " + client.getLocalAddress() + " verbunden.");
            PrintStream out = new PrintStream(client.getOutputStream(), true);
            Scanner scIn = new Scanner(System.in);
            while(true){
                System.out.println("Bitte geben sie den Sendetext ein:");
                out.println(scIn.nextLine());
                
                //out.close();
                //client.close();
            }
        }catch (IOException e){
            System.out.println(e);
            System.exit(1);
        }
    }

    public static void main(String[] args) {
       Server myServer = new Server(1234);
    }
    
}

//Client
import java.io.*;
import java.net.*;

public class Client {
    
    
    public Client(String hostName, int port) {
        
        try{
           
           Socket connection = new Socket(hostName,port); 
             
           BufferedReader in = new BufferedReader(new
           InputStreamReader(connection.getInputStream()));
           while(true){
                System.out.println(in.readLine());
                //in.close();
           }
        }catch (IOException e){
            System.out.println(e);
            System.exit(1);
        }
    }
    
    public static void main(String[] args) {
        Client myClient = new Client("localhost",1234);
    }
    
}

Thread closed*g*
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben