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.


Anmelden zum Antworten