CodeFatal
Erfahrenes Mitglied
Hallo,
ich arbeite mich gerade in das Thema Sockets ein.
Es soll ein einfaches Server Client Problem gelöst werden.
Neben kleinen Erfolgserlebnissen habe ich nun ein Problem, welches ich nicht nachvollziehn kann. Vielleicht hat eure Erfahrung ja mehr Glück
Quellen:
Neben einigen Foren und Internet Quellen arbeite ich mit dem CHATSERVER Beispiel.
Das Anmelden an einem Server klappt auch bereits aber leider kann ich keine Daten versenden
Folgenden Quellcode habe ich mir ausgedacht:
Von MySocket wird einmal CServer und einmal CClient abgeleitet.
Rufe ich einmal die "Write" Funktion wird kein Fehler erzeugt. Allerdings kommt auch nichts in der OnReceive des Partners an.
Bei dem zweiten Schreibversuch wird dann ein Fehler geschmissen. NR 6. Invalid Handle. Wo kommt das Ding her und was hab ich vergessen!?
Hoffe ihr könnt mir helfen.
Programmiere mit 2003.NET / XP / MFC
Gruß Michael
ich arbeite mich gerade in das Thema Sockets ein.
Es soll ein einfaches Server Client Problem gelöst werden.
Neben kleinen Erfolgserlebnissen habe ich nun ein Problem, welches ich nicht nachvollziehn kann. Vielleicht hat eure Erfahrung ja mehr Glück

Quellen:
Neben einigen Foren und Internet Quellen arbeite ich mit dem CHATSERVER Beispiel.
Das Anmelden an einem Server klappt auch bereits aber leider kann ich keine Daten versenden

Folgenden Quellcode habe ich mir ausgedacht:
Code:
HRESULT CMySocket::Init_Socket(SOCKET_TYP Typ)//Initialisiert Objekt je nach Wunsch als Server oder Client
{
Release_Socket();//Alles Alte erstmal raus
m_Typ = Typ;
if(m_Typ == TYP_CLIENT)
{
if(!Create())return E_FAIL;
}
else if(m_Typ == TYP_SERVER)
{
if(!Create(SOCKET_STANDARD_PORT))return E_FAIL;
if(!Listen())return E_FAIL;
}
//else return E_FAIL;
//In und Out Richtig machen
int error=0;
p_Fil_Socket = new CSocketFile(this);
if(!p_Fil_Socket)error = 1;
else
{
p_Arc_In = new CArchive(p_Fil_Socket,CArchive::load);
if(!p_Arc_In)error = 3;
else
{
p_Arc_Out = new CArchive(p_Fil_Socket,CArchive::store);
if(!p_Arc_Out)error = 3;
}
}
if(error)
{
Release_Socket();
return E_FAIL;
}
return S_OK;
}
HRESULT CMySocket::TX_Data(RB_Socket_Data *p2Send)//Sendet Daten
{
if (p_Arc_Out != NULL)
{
if (p_Arc_Out->IsStoring())
{
TRY
{
p_Arc_Out->Write(p2Send,SIZE_RB_SOCKET_DATA);
p_Arc_Out->Flush();
}
CATCH(CFileException, e)
{
int error = GetLastError();
Release_Socket();
}
END_CATCH
}
else return E_FAIL;//Falsche Init
return S_OK;
}
return E_FAIL;
}
Von MySocket wird einmal CServer und einmal CClient abgeleitet.
Rufe ich einmal die "Write" Funktion wird kein Fehler erzeugt. Allerdings kommt auch nichts in der OnReceive des Partners an.
Bei dem zweiten Schreibversuch wird dann ein Fehler geschmissen. NR 6. Invalid Handle. Wo kommt das Ding her und was hab ich vergessen!?
Hoffe ihr könnt mir helfen.
Programmiere mit 2003.NET / XP / MFC
Gruß Michael