Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Java » Socket & OutputStream

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
25.12.2007, 16:07 Uhr
mike
Pinguinhüpfer
(Operator)


Hallo

Ich hab mir Folgenden Testcase gebastelt:
MulServer.java

C++:
import java.io.*;
import java.net.*;

public class MulServer
{  
  public static void main( String[] args ) throws IOException
  {
    ServerSocket server = new ServerSocket( 12345 );

    while ( true )
    {
      Socket client = null;

      try
      {
        client = server.accept();
        
        InputStream  in  = client.getInputStream();
        
        while( true ) {        
             int a = in.read();
            System.out.println(a);            
        }
      }
      catch ( IOException e ) {
        e.printStackTrace();
      }      
    }
  }
}



MulClient.java

C++:
import java.net.*;
import java.io.*;

class MulClient
{
  public static void main( String[] args ) throws InterruptedException
  {
    Socket server = null;

    try
    {
      server = new Socket( "localhost", 12345 );
      
      OutputStream out = server.getOutputStream();

       for(int i=0; i<100; i++) {
          out.write( 4 );
          System.out.println("write");
          Thread.sleep(5000);
      }
    }
    catch ( UnknownHostException e ) {
      e.printStackTrace();
    }
    catch ( IOException e ) {
      e.printStackTrace();
    }    
  }
}



Ich sitze heute schon den ganzen Tag dabei.
Wenn ich den Client 3 Mal senden lasse und dann den Server kille sendet der Client trotzdem noch einmal und bekommt erst dann ne Exception

Server empfängt also 3 Mal und Client sendet 4 Mal

Was mache ich da falsch bzw wie kann ichs umgehen?

thx & lg


Bearbeitung:
mit DataOutputStream und writeInt gehts ja z.B. bin grade durch captern drauf gekommen dass 4 Mal so viel Pakete geschickt werden. Warum habe ich solche Repsonse nicht bei write? :S


--

Dieser Post wurde am 25.12.2007 um 16:45 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.12.2007, 10:05 Uhr
mike
Pinguinhüpfer
(Operator)


Ok - da Java auf das OS direkt aufsetzt ist das wohl OS spezifisch. Zustell Garantie hat man also nicht 100% (durch TCP FIN ACK sieht mans dann eh im nächsten write). Werde einfach mit Timeouts arbeiten

Thanks
lg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.03.2008, 15:52 Uhr
~MartinF
Gast


Hallo zusammen,

ich habe auch eine Frage zur Client/Server-Kommunikation über TCP/IP-Socket, sodass ich keinen neuen Beitrag erstellt habe.

Die Frage habe ich bereits woanders, www.c-plusplus.de/forum/viewtopic-var-t-is-208596.html, gestellt, jedoch noch keine hilfreiche Antwort erhalten.


Zitat:

Hallo zusammen,

Das Programm Client soll eine Zeichenkette an das Programm Server senden, welches diese auf der Kommandozeile ausgibt.

import java.net.*;
import java.io.*;


C++:
public class Client
{
    public static void main(String[] args) {
        try {

        Socket socket = new Socket("localhost", 5005);
        DataOutputStream os =
            new DataOutputStream(socket.getOutputStream());

        os.writeChars("Wieder ein langweiliger Standardspruch\n");

        os.close();
        socket.close();

        } catch (IOException e) { /* ... */ }
    }
}




C++:
import java.net.*;
import java.io.*;

public class Server
{
    public static void main(String[] args) {
        try {

        ServerSocket server = new ServerSocket(5005);
        Socket socket = server.accept();
        BufferedReader is = new BufferedReader(
            new InputStreamReader(socket.getInputStream()));

        String req = is.readLine();
        // Hier wird alles korrekt ausgegeben ...
        System.out.println(req);
        // aber folgendes funktioniert nicht:
        String s = "Wieder ein langweiliger Standardspruch";
        if (req.equals(s))
            System.out.println('='); // wird nicht ausgegeben
        System.out.println(req.compareTo(s)); // Ausgabe: -87

        is.close();
        socket.close();

        } catch (IOException e) { /* ... */ }
    }
}



Die Zeichenkette wird richtig auf der Konsole ausgegeben, nur der Vergleich mit equals bzw. compareTo funktioniert nicht. Weiß jemand woran das liegt?




Grüße
Martin
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Java ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: