[Java] Socket&Client

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von b-xXx, 24. Juni 2010 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 24. Juni 2010
    Socket&Client

    Heyho,

    Ich will einen einfachen Clienten und SocketServer programmieren.
    der Client kann nacheinander eingaben tätigen und der Server wertet diese aus.
    Falls beim Clienten z.B. "esc" eingegeben wird. soll alles beendet werden.

    Server:
    Code:
    package SocketProgrammierung_SV;
    
    import java.net.*;
    import java.io.*;
    
    public class Server {
     
     ServerSocket server = new ServerSocket(1234);
     
     Server() throws IOException {
     while(true){
     
     Socket client = server.accept();
     
    
     PrintWriter out = new PrintWriter(new DataOutputStream(client.getOutputStream())); 
     BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
     
     String eingabe = in.readLine();
     
     out.write(eingabe+"\n");
     
     out.flush();
     in.close();
     out.close();
     
     }
     }
     
     public static void main(String[] args){
     try{
     Server server = new Server();
     }catch (IOException e){
     System.out.println(e);
     }
     }
     
    }
    
    Bis jetzt noch keine Auswerung der Eingabe.

    Client:
    Code:
    package SocketProgrammierung_SV;
    
    import java.io.*;
    import java.net.*;
    
    public class Client {
     
     
     Client() throws IOException {
     Socket server = new Socket ("localhost", 1234);
    
     PrintWriter out = new PrintWriter(new DataOutputStream(server.getOutputStream())); 
     BufferedReader in = new BufferedReader(new InputStreamReader(server.getInputStream()));
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
     boolean go = true;
     while(go) {
     System.out.println("Eingabe ('esc' beenden): ");
     if(br.readLine().equals("esc"))
     {
     go = false;
     }else {
     String a = br.readLine();
     out.write(a+"\n");
     out.flush();
     System.out.println(in.read());
     }
     } 
     
     
     in.close();
     out.close();
     
     }
     
     public static void main (String[] args){
     try {
     Client client = new Client();
     }
     catch (IOException e) {
     System.out.println(e);
     }
     }
    }
    
    Aber Irgendwie funktioniert da alles nicht.^^
    wenn ich esc eintippe kommt ein fehler etc.

    hab mir schon zusammen gesucht, dass man um Strings zusenden und zu empfangen die in. und outputstreams anpassen muss.

    aber ich weiß nicht so recht, wie ich es realisieren soll.
    Also die Kommunikation zwischen client und server.

    bin für jede hilfe dankbar
     
  2. 1. Juli 2010
    AW: Socket&Client

    hi,

    eigentlich müsste das beenden funktionieren (jedenfalls beim client). denn die beiden werden unabhängig voneinander gestartet. somit läuft immer der server weiter.

    vorschlag von meiner seite ist, einfach die klassen (client + server) in einem thread laufen zulassen. kommt dann der string an, einfach das programm beenden.
     
  3. 1. Juli 2010
    AW: Socket&Client

    Hier mal ein schnelles Beispiel geht aber aufjedefall noch schöner ^^

    Client:
    Code:
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.PrintStream;
    import java.net.Socket;
    import java.net.UnknownHostException;
    
    
    public class client {
     
     public static void main(String[] args) {
     try {
     Socket sock = new Socket("127.0.0.1",4444);
     
     while(true)
     {
     char[] buf = new char[255];
     BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream()));
     BufferedReader re = new BufferedReader(new InputStreamReader(System.in));
     System.out.println("Eingabe: ");
     re.read(buf, 0, 255);
     System.out.println("Senden");
     wr.write(buf);
     wr.flush();
     }
     
     
     } catch (UnknownHostException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
     } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
     }
     }
     
    }
    
    Server:
    Code:
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    
    public class server {
     
     Socket sock;
     ServerSocket servSock;
     
     public static void main(String[] args) {
     try {
     new server().listen();
     } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
     }
     }
     
     void listen() throws IOException
     {
     servSock = new ServerSocket(4444);
     System.out.println("Listen");
     sock = servSock.accept();
     System.out.println("Connected ..");
     while(true)
     {
     char[] buf = new char[255];
     InputStream in = sock.getInputStream();
     BufferedReader bufr = new BufferedReader(new InputStreamReader(in));
     bufr.read(buf, 0, 255);
     System.out.println(new String(buf));
     }
     }
    }
    

    //EDIT Natürlich Server zuerst starten ^
     
  4. 4. Juli 2010
    AW: Socket&Client

    danke euch beiden habs hinbekommen.. bw's sind raus.
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.