Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Netzwerk-Broadcast

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
07.10.2005, 20:46 Uhr
ao

(Operator)


OK. Ich hab keine Ahnung von SQL-Servern und wusste nicht, dass die das nicht können.

Aber dann würde ich davon ausgehen, dass das nicht vergessen wurde, sondern mit Absicht nicht eingebaut worden ist. Vielleicht gibt es ja gute Gründe, Änderungen nicht aktiv zu verbreiten (soll so ein Broadcast weltweit durchs Internet geroutet werden?), dann wäre der Poll-Timer doch der richtige Weg.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
08.10.2005, 15:52 Uhr
oli2006




Zitat von FloSoft:
OnReceive kriegt man nur bei TCP-Verbindungen, (glaub ich zumindest) Ansonsten probier vorerst mal die direkte IP als Test. Ansonsten ist 255.255.255.255 eine etwas "große" broadcastadresse. Probier einfahc mal NULL dann nimmt er normalerweise die richtige

Ansonsten lass dir die Fehlermeldung mit WSAGetLastError und FormatMessage ausgeben (nach SendTo) ob er überhaupt broadcastet oder ob nicht noch was fehlt (Create/Bind, was auch immer)


Bearbeitung:

Create fehlt natürlich


C++:
send.Create(Port, SOCK_DGRAM);
send.SendTo(...)







Hab jetzt alles probiert .., Create hilft auch nich, bin langsam am verzweifeln. On Receive wird nicht aufgerufen! Hat jemand ne Lösung?

Dieser Post wurde am 08.10.2005 um 15:52 Uhr von oli2006 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
08.10.2005, 20:14 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat:

OnReceive kriegt man nur bei TCP-Verbindungen, (glaub ich zumindest)



OnReceiveFrom gibts ja denke ich nicht

Ansonsten manuell pollen.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
08.10.2005, 20:27 Uhr
oli2006




Zitat von FloSoft:


Ansonsten manuell pollen.


d.h.? timer? schleife laufen lassen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
08.10.2005, 21:04 Uhr
ao

(Operator)


Timer wäre wahrscheinlich ein brauchbarer Ansatz. Ansonsten ist ein Thread die allgemeinere Lösung. Könntest du mal drüber nachdenken, wenn der Timer irgendwie nicht das leistet, was du brauchst.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
08.10.2005, 22:19 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Timer dürfte reichen, da dann ggf synchronisierung mit der oberfläche einfacher von statten gehen kann.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
08.10.2005, 22:43 Uhr
oli2006



Habs jetzt geschafft, dass OnReceive aufgerufen wird.
Allerdings nur auf dem selben Rechner über 'localhost'.


C++:
void CUDPView::OnButton1()
{
    CMySocket sock;
    SOCKADDR_IN addr;
    
    addr.sin_family      = AF_INET;
    addr.sin_port        = htons(5432);
    addr.sin_addr.s_addr = inet_addr("127.0.0.1");

    sock.Create(5432, SOCK_DGRAM, FD_READ | FD_WRITE | FD_OOB |
        FD_ACCEPT | FD_CONNECT | FD_CLOSE, "127.0.0.1");
    if(sock.SendTo("test",4,(SOCKADDR*)&addr, sizeof SOCKADDR))
        AfxMessageBox("Erfolgreich gesendet.");
}



Was muss ich machen damit ich die Anwendung auf 2 verschiedenen Rechner laufen lassen kann, und der eine reagiert, sobald der andere sendet?

Dieser Post wurde am 08.10.2005 um 22:44 Uhr von oli2006 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
09.10.2005, 10:08 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


bei SendTo statt addr NULL übergeben, und statt sizeof(SOCKADDR) ebenfalls NULL

Wenn dann erfolgreich gesendet wird und nichts ankommt, dann wird irgendwo der broadcast rausgefangen (z.b von nem firewall)
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
09.10.2005, 10:55 Uhr
oli2006



Muss noch zusätzlich ein Timer oder ein Thread laufen oder reicht es wenn ich das Programm in der Form wie es oben zu sehen ist auf 2 verschiedenen Rechnern laufen lasse? Würde dann automatisch auf beiden Rechnern bei Button-Klick OnReceive aufgerufen werden? Oder muss noch irgendwie dem Programm mitgeteilt werden dass es auf dem Port lauschen soll?
Dieser Post wurde am 09.10.2005 um 10:55 Uhr von oli2006 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
09.10.2005, 10:59 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


naja du solltest das Socket als member anlegen, in OnInitDialog Create aufrufen udn Sentto nur noch auf Buttonklick. sonst wird das Socket beim verlassen der Funktion zerstört. Und auf der Gegenseite kriegste sonst auch keine Infos.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: