Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo zusammen

In meinem Programm Empfange ich einen Broadcast jedoch liefert mir ReceiveFrom nur 4 chars zurück


OnReceive(int nErrorCode) {
[INDENT]

const READLEN = 4096;

TCHAR buff[READLEN + 1];

CString strSockAddr;

UINT uSocketPort;

int nRead = ReceiveFrom(buff, READLEN, strSockaddr, uSocketPort

[/INDENT]


}

Warum gibt er mir nur 4 zeichen zurück?? ich habe ja READLEN auf 4096 definiert also sollte er mir auch soviele zeichen zurückgeben und per WireShark hab ich gesehen das die ganze Nachricht ankommt

Freundliche grüsse

Neo336

Geschrieben
Hat niemand eine Idee woran das liegen könnte?
Bitte kein Threadpushing, siehe Boardregeln. Wenn du meinst, dass dein Thread zusätzliche Aufmerksamkeit benötigt, wende dich an einen zuständigen Moderator.

Zum Problem: nRead ist nach dem Aufruf also 4? Oder woraus folgerst du, dass du nur 4 Zeichen empfängst?

Geschrieben

ja habe ich


bool CAsyncSocket::InitBroadcastSocket() {

    int flag = 1;

    DWORD dw;

    sin.sin_family = AF_INET;

    sin.sin_port = htins(30718);

    this->Create(30718, SOCK_DGRAM);

    this->SetSockOpt(SO_BROADCAST, &flag, sizeof(flag));

    dw = GetLastError();

    if(dw != 0) return false;

    return true

}

Geschrieben

oke habe ich schnell geändert


bool CAsyncSocket::InitBroadcastSocket() {

    int flag = 1;

    DWORD dw;

    sin.sin_family = AF_INET;

    sin.sin_port = htins(30718);

    bool b1 = this->Create(30718, SOCK_DGRAM);

    bool b2 = this->SetSockOpt(SO_BROADCAST, &flag, sizeof(flag));

    if(!b1 | !b2 )  {

        dw = GetLastError();

        if(dw != 0) return false;

    }

    return true

}


die Rückgabewerte b1 & b2 sind beide true

Geschrieben

ich habe mich da schon mal umgesehen bin jetzt aber nochmal durchgegangen und da ist mir etwas ins auge gestochen kann gerade aber nicht sagen wie weit das mit meinem problem einen zusammenhabg hat


#include "stdafx.h"

#include "AsyncServer.h"

#include "ConnectS.h"



#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif


/////////////////////////////////////////////////////////////////////////////

// CConnectSoc


CConnectSoc::CConnectSoc()

{

m_nBytesSent = m_nSendDataLen = 0;

m_nRecvDataLen = sizeof(int);   // initialize for 4 byte data length <-!!!!!!

m_nBytesRecv = 0;

m_bReadDataLength = TRUE;

}

Geschrieben


m_nRecvDataLen = sizeof(int);   // initialize for 4 byte data length <-!!!!!!

das m_nRecvDataLen wird beim Windows beispiel nachher beim Receive gebraucht wie mein READLEN also könnt ihr den quote vergessen.

das ist wohl nur zufall das die den gleich auf 4 gesetzt haben.

Ich habe das ganze auch noch mit Receive anstat ReceiveFrom versucht da werden auch nur 4 zurückgegeben benutze ich den selben code jedoch um eine TCP IP nachricht zu empfangen läuft es perfekt, es wird die ganze nachricht empfagen egal ob mit Receive oder ReceiveFrom.

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...