tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von genodeftest
  • 1 Beitrag von Bratkartoffel
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
530
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Hallo zusammen,
    habe seit gestern ein böses Problem mit der genannten SocketException ....

    Zuerst mal der Code:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    
    public byte[] CommunicateData( byte[] RQB, String strIP, int nPort ) 
    throws IOException 
    {
          byte[] blwPBuffer = null;
          SocketAddress sockaddr = new InetSocketAddress( strIP, nPort );
          Socket csock = new Socket();
          csock.connect( sockaddr, m_REPSOCKETTIMEOUT );
          csock.setSoTimeout( m_REPSOCKETTIMEOUT );
          OutputStream cout = csock.getOutputStream();
     
     
          InputStream cin = csock.getInputStream();  // tritt hier auf ******
     
     
          cout.write( RQB );
          byte[] blwPBufferTemp = new byte[MAXBUFFERLEN];
          byte[] blwPBufferHeader = new byte[16];
          int len = cin.read( blwPBufferHeader, 0, 16 );
          int nsize = 0;
          if (blwPBufferHeader[0] == BUFFER_START) 
          {
            nsize = ByteHelper.getRSPDataSize( blwPBufferHeader );
            int lenneu = 0;
            blwPBuffer = new byte[BUFFER_OFFSET + 1 + nsize];
            
            for (int n = 0; n < BUFFER_OFFSET; n++) 
            {
                blwPBufferTemp[n] = blwPBufferHeader[n];
            }
            
            while( (nsize + BUFFER_OFFSET) > len ) 
            {
                lenneu = cin.read( blwPBufferTemp, len, (nsize - len + BUFFER_OFFSET) );
                len += lenneu;
            }
            
            for( int k = 0; k < len; k++ ) 
            {
                blwPBuffer[k] = blwPBufferTemp[k];
            }
     
            cin.close();
            cout.close();
            csock.close();
            WorkerErrorStatus.getInstance().setErrorWS( com.gselectronic.worker.status.IWorkerErrorStatus.WORKERERRORSTATUS_NOERROR );
          }
        return blwPBuffer;
      }

    Das Ganze tritt in einer funktionierenden Anwendung auf, die hier bei uns im Hause ca. 40 - 50 mal problemlos läuft.
    Interessanterweise jedoch dabei nur auf genau drei PCs, die allesamt in den letzten Tagen entweder neu aufgesetzt wurden oder komplett neu sind. Die Java-Version ist überall 1.6.0_29. Ich habe bei einem der drei Rechner dann mal auf Java 1.6.0_30 upgedatet, aber leider ohne Erfolg ....

    Es handelt sich durchweg um Rechner mit WinXP-SP3 !

    Leider liefert eine Websuche hier weder Erklärungen noch mögliche Ursachen.
    Deswegen hoffe ich, ggf. hier Hilfe zu finden !

    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  2. #2
    genodeftest genodeftest ist offline Mitglied Brillant
    Registriert seit
    Jun 2009
    Beiträge
    870
    Mit welchen Parametern wird die Methode aufgerufen? mit eine IP-Adresse oder einem Hostnamen? Letzteres könnte nämlich Probleme bereiten, falls der Hostname nicht aufgelöst werden kann (z.B. weil auf den frisch aufgesetzten Rechnern kein lokaler DNS-Server konfiguriert ist).
    vfl_freak bedankt sich. 
    Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  3. #3
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hi,

    würde zur Fehlersuche auch noch Wireshark mitlaufen lassen. Die Exception wird nämlich auch geworfen, wenn der Server die Verbindung trennt. Eventuell hilft dir der genaue Ablauf der Konversation ja weiter.

    Gruß,
    BK
    vfl_freak bedankt sich. 
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  4. #4
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Moin,

    Zitat Zitat von genodeftest Beitrag anzeigen
    Mit welchen Parametern wird die Methode aufgerufen? mit eine IP-Adresse oder einem Hostnamen? Letzteres könnte nämlich Probleme bereiten, falls der Hostname nicht aufgelöst werden kann (z.B. weil auf den frisch aufgesetzten Rechnern kein lokaler DNS-Server konfiguriert ist).
    Aufruf geht eigentlich über die echte IP des Zielrechners (www.xxxx.yyy.zzz) und die Portnummer. Werde das am Montag aber trotzdem mal von unserer Netzwerkkabteilung prüfen lassen - Danke!

    Sah zu dem gerade, dass ich vorhin im ersten Post, die falsche Stelle bezeichnet habe ... mea culpa
    Es passiert natürlich beim READ :
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    
    public byte[] CommunicateData( byte[] RQB, String strIP, int nPort ) 
    throws IOException 
    {
          byte[] blwPBuffer = null;
          SocketAddress sockaddr = new InetSocketAddress( strIP, nPort );
          Socket csock = new Socket();
          csock.connect( sockaddr, m_REPSOCKETTIMEOUT );
          csock.setSoTimeout( m_REPSOCKETTIMEOUT );
          OutputStream cout = csock.getOutputStream();
          InputStream cin = csock.getInputStream();
          cout.write( RQB );
          byte[] blwPBufferTemp = new byte[MAXBUFFERLEN];
          byte[] blwPBufferHeader = new byte[16];
     
     
          int len = cin.read( blwPBufferHeader, 0, 16 );    // tritt hier auf    ! ! ! ! 
     
     
          int nsize = 0;
          if (blwPBufferHeader[0] == BUFFER_START) 
          {
            nsize = ByteHelper.getRSPDataSize( blwPBufferHeader );
            int lenneu = 0;
            blwPBuffer = new byte[BUFFER_OFFSET + 1 + nsize];
            
            for (int n = 0; n < BUFFER_OFFSET; n++) 
            {
                blwPBufferTemp[n] = blwPBufferHeader[n];
            }
            
            while( (nsize + BUFFER_OFFSET) > len ) 
            {
                lenneu = cin.read( blwPBufferTemp, len, (nsize - len + BUFFER_OFFSET) );
                len += lenneu;
            }
            
            for( int k = 0; k < len; k++ ) 
            {
                blwPBuffer[k] = blwPBufferTemp[k];
            }
     
            cin.close();
            cout.close();
            csock.close();
            WorkerErrorStatus.getInstance().setErrorWS( com.gselectronic.worker.status.IWorkerErrorStatus.WORKERERRORSTATUS_NOERROR );
          }
        return blwPBuffer;
      }

    Gruß
    Klaus
    Geändert von vfl_freak (20.01.12 um 17:33 Uhr)
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  5. #5
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Moin Bratkartoffel (was für ein Name, da bekomme ich ja schon wieder Hunger ... ),

    Zitat Zitat von Bratkartoffel Beitrag anzeigen
    würde zur Fehlersuche auch noch Wireshark mitlaufen lassen. Die Exception wird nämlich auch geworfen, wenn der Server die Verbindung trennt. Eventuell hilft dir der genaue Ablauf der Konversation ja weiter.
    ok, Danke - das ist sicher auch noch ein guter Ansatz. Muss mich damit mal beschäftigen !

    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

Ähnliche Themen

  1. MSSQL Server Connection reset
    Von bernd00 im Forum Java
    Antworten: 8
    Letzter Beitrag: 07.09.11, 23:32
  2. Erst Connection Reset dann Broken Pipe
    Von H3llGhost im Forum Java
    Antworten: 2
    Letzter Beitrag: 10.11.09, 16:44
  3. Antworten: 3
    Letzter Beitrag: 18.03.09, 08:14
  4. Antworten: 1
    Letzter Beitrag: 04.04.06, 20:06
  5. fehlermeldung: connection reset by ....
    Von 4nd3rl im Forum Linux & Unix
    Antworten: 3
    Letzter Beitrag: 04.04.03, 10:28