Zum Inhalt springen

NetSends unter Win2k/XP empfangen


A.Z.R.A.E.L.

Empfohlene Beiträge

Hallo!

Ich möchte ein Java Programm unter Windows 2000/XP schreiben, dass alle an mich gesendeten Netsends empfängt und diesen Nachrichtentext+IP des Senders in einem Listenfeld ausgibt. (Nachricht soll somit NICHT als PopUP auftauchen!)

Jedoch weiß ich nicht wirklich einen Ansatz um dies zu verwirklichen!

Kann mir vielleicht jemand helfen?

Danke

Azrael

P.S.: Version: J2SDK1.4

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich möchte ein Java Programm unter Windows 2000/XP schreiben, dass alle an mich gesendeten Netsends empfängt und diesen Nachrichtentext+IP des Senders in einem Listenfeld ausgibt. (Nachricht soll somit NICHT als PopUP auftauchen!)

Jedoch weiß ich nicht wirklich einen Ansatz um dies zu verwirklichen!

Kann mir vielleicht jemand helfen?

Ich weiss nicht, on das so einfach nur mit Java möglich ist. Um Windows-Netsends zu empfangen und die Weitergabe an Windows zu blocken wirst du wahrscheinlich ziemlich tief in die Windows API einsteigen müssen - was du mit Java nicht machen kannst.

Eine Möglichkeit wäre auch hier höchstens der Zugriff via JNI, dich über C auf die Windows API aufsetzt und von dort aus deine Java Umgebung wieder aufrufst.

Ciao

Christian

Link zu diesem Kommentar
Auf anderen Seiten teilen

Naja von der Verwendung von "native" Methoden bin ich nicht so besonders begeistert, da ich vor allem keine Ahnung hab wie das funktionieren würde...

Ich hätte gedacht ich beende den Nachrichtendienst und mach einen Server auf, der den Port überwacht wo die Nachrichten normalerweise hingeschickt werden und diese Nachrichten geb ich dann irgendwie aus (falls die nicht verschlüsselt sind...)

So ungefähr wäre halt mein Ansatz...

Nur weiß ich weder den Port wo die Nachrichten entgegengenommen werden, noch ob Windows das durchgehen lässt das ich diesen Port belege!

Gruß

Azrael

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

du müsstest nicht nur auf dem Port horchen (was kein Problem darstellen sollte), sondern auch das SMB Protokoll auswerten. Zumindest den Teil der für net send zuständig ist.

Das stelle ich mir sehr aufwändig vor.

Eine fertige Library die sich mit SMB bzw dem Common Internet File System (CIFS) beschäftigt, findest du unter:

http://jcifs.samba.org/

Ob damit net send Auswertungen möglich sind, weiss ich allerdings nicht.

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen

wie so ein netsend aufgebaut ist?

Bei Microsoft in der Windows API (http://msdn.microsoft.com/library/) findet sich irgendwo eine Übersicht über die NetXXX Funktionen, da ist dann unter anderem auch NetSendMessageBuffer (order so ähnlich) wo du schonmal NetSends mit verschicken kannst. Da sollte ein JNI Wrapper eigentlich gar nicht mal so kompliziert werden - theoretisch :-)

Ciao

Christian

Link zu diesem Kommentar
Auf anderen Seiten teilen

könntest du mir vielleicht erklären wie ein "JNI Wrapper" funktioniert??

Denn wie gesagt: Sowas hab ich noch nie gemacht!

Im Prinzip musst du drei Schritte ausführen:

(1)

Eine Java-Klasse erstellen, in der du eine (oder mehrere) Methoden als native deklariest - in etwa so:


public class NativeTestClass {


  public native void doNativeAction();


}

(2) Dann mit dem Befehl javah eine C(++)-Header Datei erstellen. Zu dieser Header-Datei eine Implementierung schreiben und als Library mit dem C(++)-Compiler deiner Wahl eine DLL erstellen. (3) Diese DLL im PATH verfügbar machen und in der Java-Klasse, von der aus du dir native Methode aufrufen willst laden:

public class UseNativeClass {


  static {

    try {

      System.loadLibrary("nameDerDLL");

    } catch(Exception e) {

      System.err.println("Could not load required dll");

      e.printStackTrace();

    }

  }


  public static void main(String[] args) {

    NativeTestClass instance = new NativeTestClass();

    instance.doNativeAction();

  }


}

Ist also alles nicht ganz so trivial. Du wirst wohl auch nicht drum herumkommen (wenn du es denn tatsächlich so lösen willst) dich mit C zu befassen und dort die Funktionen zu implementieren.

Das war jetzt die ganz kurze Fassung, zum Thema JNI gibt's auch bessere Tutorials, z.B. hier:

http://java.sun.com/docs/books/tutorial/native1.1/concepts/

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=3067&lngWId=2

Ansonsten einfach mal googlen.

Ciao

Christian

Link zu diesem Kommentar
Auf anderen Seiten teilen

hallo zusammen!

also: hab es jetzt geschafft mittels einer nativen Methode ein NetSend zu versenden,

diese aber empfangen und zu lesen hab ich noch nicht versucht!

die native methode macht nix anderes als einen "mailslot" auf dem Empfänger zu öffnen und die nachricht im (ich glabe) unicode-format zu schreiben!

allerdings hilft mir das nicht besonders weiter da ich eigentlich mit meinem programm auch die netsends im linux empfangen wollte(nicht als popup!)...

Weiß jemand ob ich mit den Java eigenen Mitteln einen Mailslot öffnen, darein schreiben und die Nachricht lesen kann???

thx

Azrael

Link zu diesem Kommentar
Auf anderen Seiten teilen

also: hab es jetzt geschafft mittels einer nativen Methode ein NetSend zu versenden, diese aber empfangen und zu lesen hab ich noch nicht versucht!

Was?? *neugier*

Ich hab das Testweise auchmal probiert aber hier hat's irgendwie nicht geklappt. Welche API-Funktion hast du denn verwendet? Vielleicht finde ich ja für's Empfangen was.

Weiß jemand ob ich mit den Java eigenen Mitteln einen Mailslot öffnen, darein schreiben und die Nachricht lesen kann???

Wie gesagt, da das ganze für mich ziemlich OS spezifisch aussieht wirst du da mit Java pur wohl auch nicht besonders weiterkommen.

Ciao

Christian

Link zu diesem Kommentar
Auf anderen Seiten teilen

Christian:

der Name der Funktion ist "CreateFile"

Da diese Funktion eigentlich "nur" eine Datei erstellt bzw. wenn vorhanden einfach was reingeschreibt, dachte ich mir das ich mit den Java Funktionen eigentlich klappen müsste, oder??

Und was hat das jetzt mit NetSend zu tun? *verwirrtsei*

Ciao

Christian

Link zu diesem Kommentar
Auf anderen Seiten teilen

wenn du netsend ausführst wird eine datei auf dem zielrechner erstellt (mailslot/messngr oder so) in dem die nachricht geschrieben wird (als Bytes halt!)

Aaaaaaah *lichaufgeh*, so funktioniert das. Kannst du mir den Source mal mailen, würde mich mal interessieren.

Ciao

Christian

Link zu diesem Kommentar
Auf anderen Seiten teilen

hi!

also mit den java - eigenen mitteln geht nix! da ich keine Klasse gefunden habe die es mir erlauben würde, wird das eine ziemlich windows spezifsche anwendung!

Leider! :-(

@Christian: Email - Addy wär nicht schlecht!

Gruß

Azrael

P.S.: (hab mich jetzt durchgerungen auch ne GUI zu machen!)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...