Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Don Pasquale am 12.06.03 - 11:00:34

Titel: Winsock und LotusScript
Beitrag von: Don Pasquale am 12.06.03 - 11:00:34
Hallo Leute,

hat von Euch schon jemand eine Socket Verbindung
mit LotusScript aufgebaut ?


bytheway :Hat da jemand eine funktionsfähige Library ?

Gruß

Don Pasquale

Titel: Re:Winsock und LotusScript
Beitrag von: Till_21 am 12.06.03 - 11:49:17
habe das hier mal ausgegraben ->
hier wird ein 'ping' ueber eine socketverb gemacht :

viel spass mit dem code...
(ohne gewaehr - ist nicht auf meinen mist gewachsen)

gruss
------------------------------------------------------------------------
Titel: Re:Winsock und LotusScript
Beitrag von: Don Pasquale am 12.06.03 - 12:19:19
Vielen Dank,
aber ein Ping hilft mir nicht. :-)
Ciao
Don Pasquale
Titel: Re:Winsock und LotusScript
Beitrag von: Hoshee am 12.06.03 - 12:59:50
Yoo,

ich habe mal damit rumgespielt.
Schau mal in der Sandbox http://www-10.lotus.com/ldd/sandbox.nsf/ecc552f1ab6e46e4852568a90055c4cd/9e752a60b6f902c7852568ef006b4ad1?OpenDocument&Highlight=0,ftp (http://www-10.lotus.com/ldd/sandbox.nsf/ecc552f1ab6e46e4852568a90055c4cd/9e752a60b6f902c7852568ef006b4ad1?OpenDocument&Highlight=0,ftp)

Gruss ...

Hoshee
Titel: Wie erstellt man ein Library für ein Control
Beitrag von: Don Pasquale am 12.06.03 - 13:48:35
@Hoshee:
Danke, aber das ist es leider auch nicht.

Anderer Weg :

Wie komme ich an die nötigen Declare Zeilen die in Lotus einfügen muß, um das Control korrekt anzusprechen ?

Declare Function accept Lib "wsock32.dll" (Byval s As Long, addr As sockaddr, addrlen As Long) As Long

Ciao

Don Pasquale
Titel: Re:Winsock und LotusScript
Beitrag von: Hoshee am 12.06.03 - 14:24:28
Yoo,

die Function accept kenne ich nicht / hab' ich nicht gefunden.
Erzähl doch mal, was Du überhaupt vor hat!?!?!?

Gruss ...

Hoshee
Titel: Re:Winsock und LotusScript
Beitrag von: Don Pasquale am 12.06.03 - 15:55:36
@Hoshee :

Ich möchte zwischen 2 Rechnern eine
SocketVerbindung aufbauen und eine
bestimmte Nachricht senden um dann
eine Antwort zu erhalten.

Das Senden klappt bereits und ein Antwort
wird auch gesendet, aber der Empfang
mittels getData klappt nicht.


Ciao

Don Pasquale
Titel: Re:Winsock und LotusScript
Beitrag von: Hoshee am 13.06.03 - 07:54:36
Yoo,

ist getData eine eigene Function von Dir?
Normalerweise prüft man Periodisch mit der Function recv ob Daten angekommen sind um dann die Daten mit eben dieser Function auszulesen.

Declare Function recv Lib "wsock32.dll" (ByVal s As Long, buf As Any, ByVal buflen As Long, ByVal flags As Long) As Long

Gruss ...

Hoshee
Titel: Re:Winsock und LotusScript
Beitrag von: Don Pasquale am 13.06.03 - 08:00:36
@Hoshee

danke für den DECLARE String, kannst Du mir sagen wie Du den
erstellt hast ?

Hier meinen bisherigen Code :
   Dim hSock As Long
   Dim rCoda As Long
   Dim strAntwort As String
   
   StartWinsock("TEST")
   hsock = ConnectSock("localhost",4444,"",0,0)   
   rCode = SendData(hSock, "1|153|0000000002" & Chr$(10)  )
   
   
   If DataComeIn(hSock) >= 1 Then 'Sind daten gekommen ?
      strAntwort = GetData(hSock)
      DataArraived = True
      Print "GetDate Ergebnis:" & strAntwort
   End If


Hier die Funktionen :

Public Function GetData(Byval Sock As Long) As String
   Dim Tmpstr As String * 1048, Retval As Long
   Retval = recv(Sock, Byval Tmpstr, Len(Tmpstr), 0&)
   GetData = Left$(Tmpstr, Retval)
End Function

Public Function DataComeIn(Byval Sock As Long) As Long
   Dim Tmpstr As String * 1
   DataComeIn = recv(Sock, Byval Tmpstr, Len(Tmpstr), MSG_PEEK)
   If DataComeIn = -1 Then
      DataComeIn = WSAGetLastError()
   End If
End Function

Public Function SendData(Byval Sock As Long, Byval Data As String) As Long
   SendData = send(Sock, Byval Data, Len(Data), 0&)
End Function
Titel: Re:Winsock und LotusScript
Beitrag von: Hoshee am 13.06.03 - 08:20:47
Yoo,

bzgl. der Functions benutze ich einen API-Viewer. Schau Dir mal den hier an: http://www.mentalis.org/agnet/appdown.shtml (http://www.mentalis.org/agnet/appdown.shtml)
Sind auch immer Beispiele dabei.

Was mir in Deinem Script fehlt ist ein Timer-Ereignis, welches regelmäßig nach eingehenden Daten ausschau hält. Nach Deinem Script (wenn es Sequentell abläuft!) schickst Du Daten raus und prüft dann gleich ab ob welche da sind. Selbst bei einer GigaBit-Anbindung ist das unwahrscheinlich. Also musst Du warten  ;D

z.B.:

Private Sub Timer1_Timer()
   If DataComeIn(hSock) >= 1 Then 'Sind daten gekommen ?
      strAntwort = GetData(hSock)
      DataArraived = True
      Print "GetDate Ergebnis:" & strAntwort
   End If
End Sub
Titel: Re:Winsock und LotusScript
Beitrag von: Hoshee am 13.06.03 - 08:25:28
Yoo nochmal,

unter VB gibt es noch das Ereignis DataArrival.
Keine Ahnung ob mal das auch in LS ansprechen kann ???

Gruss ...

Hoshee
Titel: Re:Winsock und LotusScript
Beitrag von: Don Pasquale am 13.06.03 - 09:26:17
@Hoshee
Der API Viewer ist cool, vielen Dank

Die meisten Socket Funktionen die dort dokumentiert werden, greifen aber auf die WS2_32.DLL zu, während ich noch die wsock32.dll nutze.

Mein aktueller Code, der auch nicht funktioniert :

Ich habe nun eine DO LOOP WHILE Schleife
eingebaut, sollte das nicht auch funktionieren ?

   Dim hSock As Long
   Dim rCode As Long
   Dim strAntwort As String
   Dim i As Integer
   StartWinsock("TEST")
   hsock = ConnectSock("localhost",4444,"TEST",0,1)   
   rCode = SendData(hSock, "1|153|0000000002" & Chr$(10)  )
   
   Dim DataArrived As Integer
   DataArrived = 0
   
   Do
      If DataComeIn(hSock) >= 1 Then 'Sind daten gekommen ?
         
         strAntwort = GetData(hSock)
         If strAntwort <> "" Then
            ergebnis$ = strAntwort
            DataArrived = 1
         End If
         
          ' Print "GetDate Ergebnis:" & strAntwort
      End If
      Print " DataArrived : " & DataArrived
   Loop   While DataArrived <> 1
   
   Print "Ergebnis: " & ergebnis$
Titel: Re:Winsock und LotusScript
Beitrag von: Hoshee am 13.06.03 - 09:39:15
Yoo,

hast Du den API-Viewer oder den API-Guide?

Zum LOOP: Das Ding frisst natürlich Resourcen. Mit einem Timer bist Du da besser dran.
Hast Du denn schon mal mit einem Sniffer geprüft, ob wirklich Daten ankommen?

Gruss ...

Hoshee


Titel: Re:Winsock und LotusScript
Beitrag von: Don Pasquale am 13.06.03 - 10:05:06
@Hoshee

Timer, wie funktioniert ein Timer ?

Aber mal davon abgesehen dass es Ressourcen frisst,
es empfängt nichts.

Sniffer ,
hab ich auch noch nie benutzt, aber ich mach mich kundig.

Gruß

Don Pasquale
Titel: Re:Winsock und LotusScript
Beitrag von: Hoshee am 13.06.03 - 10:41:07
Yoo,

zwei Sachen sind mir in Deinem Code noch aufgefallen:

Code
   
StartWinsock("TEST")
hsock = ConnectSock("localhost",4444,"TEST",0,1)

Die Functionen "StartWinsock" und "ConnectSock" hast Du? Und warum connectest Du auf localhost? Bist Du sicher, das Du eine Verbindung bekommst? Ein SendData geht auch locker ins leere, wenn keine Verbindung besteht! Und ich entdecke in Deinem Code keine Abfrage auf eine (nicht-)bestehende Verbindung.

Zum Timer (NotesTimer class): Represents a mechanism for triggering an event every fixed number of seconds.
Schau Dir mal die Hilfe im Designer an. Da ist die Klasse beschrieben.

Leider habe ich auf keinem meiner Rechner eine wsock32.dll nur die ws2_32.dll. Kann also leider nicht testen.

Gruss ...

Hoshee


Titel: Re:Winsock und LotusScript
Beitrag von: Don Pasquale am 13.06.03 - 11:19:04
@Hoshee

Auf meinem Rechner ist zu Testzwecken ein Dienst eingerichtet, der auf dem Port 4444 lauscht. Dort im Protokoll steht, dass er eine
Anfrage bekommen hat. Wenn das Prinzip funktioniert wird aus localhost natürlich ein anderer Rechner.


Die Funktionen habe ich ConnectSock ist ein wenig länger, ist im Prinzip die Funktion Connect.

Public Function StartWinsock(sDescription As String) As Integer
   Dim StartupData As WSADataType
   If Not WSAStartedUp Then
      If Not WSAStartup(&H101, StartupData) Then
         WSAStartedUp = True
         sDescription = StartupData.szDescription
      Else
         WSAStartedUp = False
      End If
   End If
   StartWinsock = WSAStartedUp
End Function

Titel: Re:Winsock und LotusScript
Beitrag von: Hoshee am 13.06.03 - 12:28:17
Yoo,

irgendwie komm ich nicht weiter  :P

Habe auf kein Tool mit dem ich das Testen kann.
Ich mach mir noch mal Gedanken. Vielleicht fällt in der Zwischenzeit jemandem was ein ...

Gruss ...

Hoshee
Titel: Re: Winsock und LotusScript
Beitrag von: notes_andy am 21.02.13 - 15:26:08
Hallo

Ich habe auch das Problem beim lesen der Daten. Hat das schon jemand geschafft. Oder funktioniert das mit Lotus Script nicht.

DANKE FÜR DIE HILFE

glg. Andreas
Titel: Re: Winsock und LotusScript
Beitrag von: Tode am 21.02.13 - 17:25:36
na ja... der thread war ja nur 10 Jahre alt...