Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

NetSends unter Win2k/XP empfangen

Empfohlene Antworten

Veröffentlicht

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

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

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

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

@Jaraz: Erstmal danke für den Link!

Aber ich denke das die sich "nur" mit Dateien befasst haben....

Den Port weißt du zufällig nicht und wo man nachschauen könnte wie so ein netsend aufgebaut ist?

Danke Azrael

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

@Christian:

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

Denn wie gesagt: Sowas hab ich noch nie gemacht!

Danke

Azrael

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

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

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

@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??

Gruß

Azrael

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

@Christian:

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!)

Gruß

Azrael

Anhang zu Posting von vorher:

das bei einem netsend das so abläuft hab ich eben erst später rausgefunden! (vor dem Erstellen des Beitrags!)

Ich probier heute mal ob ich mit den Java eigenen Mitteln ein Netsend schreiben kann!

Gruß

Azrael

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

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!)

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

java@perdian.de

Ciao

Christian

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.