Einefache socket gesucht...
-
hallo,
ich habe Visual Studio 2008.
ich bin auf der Suche(den ganzen Taq) auf eine normal Socket, die auf einen Text string wartet.port 123
Der Text string soll auf den Bilschrim geworfen werden.
Unter Linux ist das voll einfach.
-
ok,
ich habe ein bischen gegooelt.Warum geht das nicht?:
meine testDLG.cpp...
//geht hanz oben... #include <afxsock.h> // For CSocket using namespace std;
das geht in meinem Knopf:
void DieWithError(char* errorMessage); // Error handling function void HandleTCPClient(CSocket& clntSock); // Initialize MFC and print an error on failure if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { // DieWithError("Fatal Error: MFC initialization failed"); MessageBox("Fatal Error: MFC initialization failed"); } // Initialize the AfxSocket AfxSocketInit(NULL); //int echoServPort = atoi(argv[1]); // First arg: local port int echoServPort = atoi("80"); // First arg: local port CSocket servSock; // Socket descriptor for server // Create the server socket if (!servSock.Create(echoServPort)) { MessageBox("servSock.Create() failed"); } // Mark the socket so it will listen for incoming connections if (!servSock.Listen(5)) { MessageBox("servSock.Listen() failed"); } for(;;) { // Run forever SOCKADDR_IN echoClntAddr; // Client address // Get the size of the in-out parameter int clntLen = sizeof(echoClntAddr); CSocket clntSock; // Socket descriptor for client // Wait for a client to connect if (!servSock.Accept(clntSock)) { MessageBox("servSock.Accept() failed"); } // ClntSock is connected to a client! // Get the client's host name if (!clntSock.GetPeerName((SOCKADDR*)&echoClntAddr, &clntLen)) { MessageBox("clntSock.GetPeerName() failed"); } // cout << "Handling client " << inet_ntoa(echoClntAddr.sin_addr) << endl; // m_status= clntSock.Receive; // Update(FALSE); HandleTCPClient(clntSock); }
nach dem Compilieren kommt:
1>testDlg.obj : error LNK2019: unresolved external symbol "void __cdecl HandleTCPClient(class CSocket &)" (?HandleTCPClient@@YAXAAVCSocket@@@Z) referenced in function "public: void __thiscall testDlg::OnBnClickedButton3(void)" (?OnBnClickedButton3@testDlg@@QAEXXZ)
-
Du musst die dekl. Funktionen schon noch definieren.
-
thx,
sorry verstehe nicht.
welche?
-
void HandleTCPClient(CSocket& clntSock);
ist die deklaration...
... dann die definition...
void HandleTCPClient(CSocket& clntSock) { }
ausserdem, wo steht denn der folgende Code?
// Initialize MFC and print an error on failure if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { ...
Dort wo er nämlich jetzt steht gehts nicht.
BTW: Das ist auch unter Linux erforderlich.