ERLEDIGT
JA
JA
ANTWORTEN
1
1
ZUGRIFFE
212
212
EMPFEHLEN
-
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:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
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ß MichaelGrüß die Welt, dann grüßt sie dich!
Keine Panik, die Titanic ist schon gesunken!
-
Hallo,
Problem gelöst
Folgende Einträge fehlten: (Jeweils für CMySocket, CServer und CClient)
Header:
DECLARE_DYNAMIC(CMySocket);
CPP:
IMPLEMENT_DYNAMIC(CMySocket, CSocket)
Vielleicht hilft es ja dem nächsten. Die Zeilen sind auch in dem oben genannten Beispiel zu finden.
Gruß MichaelGrüß die Welt, dann grüßt sie dich!
Keine Panik, die Titanic ist schon gesunken!
Ähnliche Themen
-
'Socket Error #10038 Socket operation on non-socket'
Von jupp2oo8 im Forum C/C++Antworten: 2Letzter Beitrag: 30.01.08, 10:24 -
'Socket Error #10038 Socket operation on non-socket'
Von jupp2oo8 im Forum C/C++Antworten: 2Letzter Beitrag: 29.01.08, 14:59 -
Child Handle -> Parent Handle
Von dobermant im Forum Visual Basic 6.0Antworten: 0Letzter Beitrag: 01.12.06, 02:08 -
Handle für Socket
Von gehrti im Forum VisualStudio & MFCAntworten: 1Letzter Beitrag: 30.04.05, 01:20 -
Invalid command line. Error : Invalid path
Von ArneH im Forum JavaAntworten: 0Letzter Beitrag: 08.06.04, 20:31





Zitieren
Login






