Sockets und MFC
-
Hallo,
ich habe eine eigne Klasse geschrieben, die einen Socket erzeugt und dann eine Textzeile darüber sendet oder empfängt.
Wenn ich alles in einem Konsolenprogramm kompiliere funktioniert es, aber wenn ich ein MFC projekt erstelle, lässt sich die Datei TCPIP_COMM_WIN.cpp nicht mehr kompilieren.
Es macht auch keinen Unterschied ob ich Socket Unterstützung aktiviere oder nicht!
Hier mal der Code von der headerdatei:#include <winsock.h> #if !defined(_WINSOCK2API_) #define SD_SEND 1 #endif class CTCPIP_COMM_WIN { public: CTCPIP_COMM_WIN(); ~CTCPIP_COMM_WIN(); u_long LookupAddress(const char* pcHost); SOCKET EstablishConnection(u_long nRemoteAddr, u_short nPort); bool SendString(char *strMessage); int ReadString(char *vptr, int maxlen); bool ShutdownConnection(); private: SOCKET m_sd; };
und der Code der cpp datei
#include "TCPIP_COMM_WIN.h" CTCPIP_COMM_WIN::CTCPIP_COMM_WIN() { } CTCPIP_COMM_WIN::~CTCPIP_COMM_WIN() { } u_long CTCPIP_COMM_WIN::LookupAddress(const char* pcHost) { u_long nRemoteAddr = inet_addr(pcHost); if (nRemoteAddr == INADDR_NONE) { hostent* pHE = gethostbyname(pcHost); if (pHE == 0) { return INADDR_NONE; } nRemoteAddr = *((u_long*)pHE->h_addr_list[0]); } return nRemoteAddr; } SOCKET CTCPIP_COMM_WIN::EstablishConnection(u_long nRemoteAddr, u_short nPort) { m_sd = socket(AF_INET, SOCK_STREAM, 0); if (m_sd != INVALID_SOCKET) { sockaddr_in sinRemote; sinRemote.sin_family = AF_INET; sinRemote.sin_addr.s_addr = nRemoteAddr; sinRemote.sin_port = nPort; if (connect(m_sd, (sockaddr*)&sinRemote, sizeof(sockaddr_in)) == SOCKET_ERROR) m_sd = INVALID_SOCKET; } return m_sd; } bool CTCPIP_COMM_WIN::SendString(char *strMessage) { if (send(m_sd, strMessage, strlen(strMessage), 0) != SOCKET_ERROR) return true; else return false; } int CTCPIP_COMM_WIN::ReadString(char *vptr, int maxlen) { int n, rc; char c; for (n=1;n<maxlen;n++) { if ((rc = recv(m_sd, &c, 1, 0)) == 1) { *vptr++ = c; if (c == '\n') break; } else if (rc == 0) { if (n==1) return(0); else break; } } *vptr = 0; return(n); } bool CTCPIP_COMM_WIN::ShutdownConnection() { if (shutdown(m_sd, SD_SEND) == SOCKET_ERROR) return false; if (closesocket(m_sd) == SOCKET_ERROR) return false; return true; }
die Fehlermeldung heißt:
tcpip_comm_win.cpp(88) : fatal error C1010: Unerwartetes Dateiende waehrend der Suche nach der Direktive fuer die vorkompilierte Header-Datei
was könnte da falsch sein? ich hab echt keine Ahnung warum er des in MFC nicht macht, und in Konsolenprogrammen schon!
Vielen Dank, David Epping
-
Hi,
hab gerade eben in einem anderen Forum die Antwort erhalten.
der fehler war, dass ich als oberste Include anweisung #include <stdafx.h>
angeben muss, bevor ich meine eigenen header einbinde!trotzdem Danke, david