Socket-Thread-Client

armina

Grünschnabel
Hallo,

ich versuche an eine externen Server, der nicht in Java implementiert ist alle x Sekunden einen String zu schicken. Die Socketverbindung klappt. Doch mein String kommt nie an. Könnt ihr mir vlt helfen?
bitte prePrefix und intervall nicht beachten. Die sind noch nicht fertig.
All die übergebenen Parameter hole ich mir aus der Property datei in der Main meines Hauptprogramms und rufe dort diese Klasse auf.
Hier mein Code:

Code:
package testr;

import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

import org.apache.commons.logging.Log;


public class WatchDogClient extends Thread {
       
         public final static String CR = "\r";
         private static final long DELAY_MILLIS = 60*100;
                private static Log log;
                private static Socket server = null;
                private static String prePrefix;
                private String watchdogIp;
                private String watchdogPort;
                private String brokerURL;
               
           
            public WatchDogClient(String brokerURL, String watchdogIp, String watchdogPort, String prePrefix, String intervall) {
                super();
                    this.watchdogIp = watchdogIp;
                this.watchdogPort = watchdogPort;
                    this.brokerURL = brokerURL;
                    run();
                       
          }
           
            public void sendString(){

                         try {
                                        String Message = "";
                                    String brokerNEU = brokerURL.substring(6,21);
                                        String brokerPort = brokerURL.substring(22,27);
                                        String prePrefix = WatchDogClient.getPrePrefix();

                                        Message +=  "<component>"+ "Consumer " + prePrefix + "</component>" + CR;
                                        Message += "<ip>"+ brokerNEU  + "</ip>"+CR;
                                         Message +=  "<port>"+brokerPort+"</port>"+ CR ;
                                         Message += "<level>"+"OK"+"</level>"+ CR;
                                         Message += "<message>"+ "OK" + "</message>";
                                         
                                          PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(server.getOutputStream()));                                        
                                        printWriter.write(Message);
                                        System.out.println(Message);
                                        printWriter.flush();
                                          printWriter.close();

                                } catch (Exception e) {
                                log.error("SocketClient: " + e);
                                } finally {
                                        try {
                                                //server.close();
                                        } catch (Exception e) {
                                        log.debug("SocketClient: " + e);
                                        }
                                }
                }

                @Override
                 public void run() {
            try {
                    server = new Socket(this.watchdogIp, Integer.parseInt(this.watchdogPort));
                    sendString();
                    Thread.sleep(DELAY_MILLIS);
                        } catch (InterruptedException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        } catch (NumberFormatException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        } catch (UnknownHostException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
        }
                public static String getPrePrefix() {
                        return prePrefix;
                }
                public static void setPrePrefix(String prePrefix) {
                        WatchDogClient.prePrefix = prePrefix;
                }
               
        }
 
Auf einem Javaserver kommt der String an. Ich würde vermuten, dass es eher am Servercode liegt.
Z.B. könnte der server einen anderen end of line Indikator erwarten als Java verwendet.
Am sinnvollsten wäre meines Erachtens auf dem Server zu debuggen was passiert.
 
Zurück