Domino 9 und frühere Versionen > Entwicklung

Auf ein Neues : Winsock Control

<< < (3/3)

Ralf_M_Petter:
Sorry wie ich es mir gedacht habe, haben sich beim kopieren ein paar Fehler eingeschlichen. Hier nochmal der Code, der jetzt einwandfrei kompilieren müsste:

import lotus.domino.*;
import java.net.*;
import java.io.*;
public class JavaAgent extends AgentBase {

   public void NotesMain() {
         try{
         Session session = getSession();
         AgentContext agentContext = session.getAgentContext();
         Socket s =new Socket(InetAddress.getByName("172.16.2.60"),23);
         s.setSoTimeout(2000);
         BufferedReader sInput=new BufferedReader(new InputStreamReader(s.getInputStream()));
         PrintWriter sOutput= new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
         sOutput.println("Text der verschickt wird");
         char[] puffer=null;
         // in puffer steht dann die Antwort des Kommunikationspartners  
         int gelesen=sInput.read(puffer);
         s.close();        
      }
   
      catch(Exception e) {
         e.printStackTrace();
      }
   }
}

Damit er etwas sinnvolles macht, muß man natürlich noch die IP Adresse, Protokoll ändern und eventuell etwas sinnvolles schicken.

Grüße

Ralf

Don Pasquale:
@Ralf

Super, da tut sich was !
Ergänzen mußte ich um die 4444 ( das ist der Port)
und um folgende Zeile
        sOutput.flush();

Das ist der aktuelle Code,
aber wie bekomme ich angezeigt was in dem Puffer steht ?
Das SENDEN funktioniert !!!

import lotus.domino.*;
import java.net.*;
import java.io.*;
public class JavaAgent extends AgentBase {

  public void NotesMain() {
        try{
        Session session = getSession();
        AgentContext agentContext = session.getAgentContext();
        Socket s =new Socket(InetAddress.getByName("localhost"),4444);
        s.setSoTimeout(60);
        BufferedReader sInput=new BufferedReader(new InputStreamReader(s.getInputStream()));
        PrintWriter sOutput= new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
        sOutput.println("1|153|0000000011\n\r");
        sOutput.flush();
      
        char[] puffer=null;
        // in puffer steht dann die Antwort des Kommunikationspartners  
        int gelesen=sInput.read(puffer);
        s.close();        
      }
 
      catch(Exception e) {
        e.printStackTrace();
      }
  }
}

Ralf_M_Petter:
Ich habe den Code ergänzt, dass er das Ergebnis auf die Java Konsole ausgibt. Siehe Kommentar. Konnte leider nicht testen, da ich keinen Server habe der auf diesem Port in der von dir gewünschten Weise antwortet. Aber probier mal und poste eventuelle Probleme.

import lotus.domino.*;
import java.net.*;
import java.io.*;
public class JavaAgent extends AgentBase {

  public void NotesMain() {
        try{
        Session session = getSession();
        AgentContext agentContext = session.getAgentContext();
        Socket s =new Socket(InetAddress.getByName("localhost"),4444);
        s.setSoTimeout(60);
        BufferedReader sInput=new BufferedReader(new InputStreamReader(s.getInputStream()));
        PrintWriter sOutput= new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
        sOutput.println("1|153|0000000011\n\r");
        sOutput.flush();
        StringBuffer Erg=new StringBuffer();
       char[] puffer=null;
        // in puffer steht dann die Antwort des Kommunikationspartners
        // Diese wird so lange zum Ergebnis hinzugefügt, bis keine Antwort mehr kommt. Dann wird das Ergebniss über die Javakonsole ausgegeben.
        // Um diese anzuzeigen  Menü Datei>Extras>Java Debug Console
      while (sInput.read(puffer)!=-1){
         Erg.append(puffer);
      }
      System.out.println("Ergebnis: "+Erg.toString());
        s.close();      
      }
 
      catch(Exception e) {
        e.printStackTrace();
      }
  }
}

Axel_Janssen:
ich habe etwas scheinbar funktionierendes hinbekommen basierend auf code aus dem "Handbuch der Javaprogrammierung".

Verbinde mit Tomcat. Sende ihm über http die Nachricht von Don (was keinen Sinn macht) und erhalte eine HTTP 200 als Rückmeldung (sieht normal aus).


hier ist code (musst natürlich noch den port ändern.
Es dauert relativ lange .
WICHTIG: Um das Ergebnis und eventuelle Fehlermeldungen sehen zu können, brauchst du die Java Debug Console (File | Tools | Show Java Debug Console ... genau unter Debug Lotus Script).  
Öffne die Konsole, bevor du den Agenten startest.



--- Code: ---import lotus.domino.*;
import java.net.*;
import java.io.*;
public class JavaAgent extends AgentBase {

  public void NotesMain() {
        try{
           int len = 0;
           // notes stuff
           Session session = getSession();
           AgentContext agentContext = session.getAgentContext();
      
      // socket - Verbindung generieren.
           Socket sock =new Socket(InetAddress.getByName("localhost"), 8080);
           InputStream in = sock.getInputStream();
      OutputStream out = sock.getOutputStream();
      
      // an Socket Verbindung schreiben.
      out.write("1|153|0000000011\n\r".getBytes());
      out.flush();
      
      // von socket Verbindung lesen
      byte[] b = new byte[100];
          try {
            while ((len = in.read(b)) != -1)             
                 System.out.write(b, 0, len);
         } catch (InterruptedIOException e) {
           //nochmal versuchen
         }
        sock.close();      
      }
      catch(Exception e) {
        e.printStackTrace();
      }
  }
}

--- Ende Code ---


das ist ein schneller hack und sicher nicht optimal

Gruss Axel

Don Pasquale:
@AXEL_JANNSEN


 :) ;D :D 8)


Vielen Dank.

Nun funktioniert´s.

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln