facebook

Include files not including in C

  1. MyEclipse IDE
  2.  > 
  3. Off Topic
Viewing 3 posts - 1 through 3 (of 3 total)
  • Author
    Posts
  • #283482 Reply

    jarome
    Member

    I am trying to get sockets to work in Windows using the MinGW environment. The following program is from Microsoft. No matter what I do, I cannot get MyEclipseIDE to include the winsock2.h include file. It does not complain until it gets to the definition of sockaddr_in which is defined in the include file.

    1) Is there a way to get a listing created that shows the results after the preprocessor step so I can tell what is happening?

    2) How do I link against a library (.a file) as opposed to a dll? MinGW has the libws2_32.a file which hopefully includes the socket routines, but I cannot figure out how to get MyEclipseIDE to use them. I can use the ws2_s2.dll file in the visualStudio directory, but I would rather stick to free things.

    Thanks for the help,
    Jim
    ———————

    
    // Microsoft Development Environment 2003 - Version 7.1.3088
    // Copyright (r) 1987-2002 Microsoft Corporation. All Right Reserved
    // Microsoft .NET Framework 1.1 - Version 1.1.4322
    // Copyright (r) 1998-2002 Microsoft Corporation. All Right Reserved
    //
    // Run on Windows XP Pro machine, version 2002, SP 2
    //
    // <windows.h> already included
    // WINVER = 0x0501 for Xp already defined in windows.h
    // A sample of client program
     
    #include <stdio.h>
    #include <winsock2.h>
     
    int main()
    {
        // Initialize Winsock.
        WSADATA wsaData;
        int iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
     
        if (iResult != NO_ERROR)
             printf("Client: Error at WSAStartup().\n");
        else
             printf("Client: WSAStartup() is OK.\n");
     
        // Create a socket.
        SOCKET m_socket;
        m_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
     
        if (m_socket == INVALID_SOCKET)
        {
            printf("Client: socket() - Error at socket(): %ld\n", WSAGetLastError());
            WSACleanup();
            return 0;
        }
        else
           printf("Client: socket() is OK.\n");
     
        // Connect to a server.
        sockaddr_in clientService;      //### It does not know sockaddr_in from winsock2.h
        clientService.sin_family = AF_INET;
        clientService.sin_addr.s_addr = inet_addr("127.0.0.1");
        clientService.sin_port = htons(55555);
     
        if (connect(m_socket, (SOCKADDR*)&clientService, sizeof(clientService)) == SOCKET_ERROR)
        {
            printf("Client: connect() - Failed to connect.\n");
            WSACleanup();
            return 0;
        }
     
        // Send and receive data.
        int bytesSent;
        int bytesRecv = SOCKET_ERROR;
        // Be careful with the array bound, provide some checking mechanism
        char sendbuf[200] = "Client: Sending some test string to server...";
        char recvbuf[200] = "";
     
        bytesSent = send(m_socket, sendbuf, strlen(sendbuf), 0);
        printf("Client: send() - Bytes Sent: %ld\n", bytesSent);
     
        while(bytesRecv == SOCKET_ERROR)
        {
            bytesRecv = recv(m_socket, recvbuf, 32, 0);
            if (bytesRecv == 0 || bytesRecv == WSAECONNRESET)
            {
                printf("Client: Connection Closed.\n");
                break;
            }
            else
                printf("Client: recv() is OK.\n");
     
            if (bytesRecv < 0)
                return 0;
            else
                printf("Client: Bytes received - %ld.\n", bytesRecv);
        }
     
        return 0;
    }
    
    #283483 Reply

    jarome
    Member

    And yes, I did put the mingw\include in my path

    #283484 Reply

    jarome
    Member

    in the compiler’s include path

Viewing 3 posts - 1 through 3 (of 3 total)
Reply To: Include files not including in C

You must be logged in to post in the forum log in