0

コードブロックを使用してソケットプログラミングを試みています。

#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#include <ws2tcpip.h>

int main()
{
    int sock;

    sock = socket(AF_INET6, SOCK_STREAM, 0);
    if(sock == -1)
    {
        printf("\n Socket not created %d\n", sock);
    }

    return 0;
}

ソケットを作成する行で -1 が返されます。助けが足りないのは何ですか?

4

1 に答える 1

4

WSAStartupプロセスによる Winsock DLL の使用を開始するには、関数を呼び出す必要があります。

WSACleanUpまた、最後に関数を呼び出します。

リンクWSAStartupから:

WSAStartup関数は、アプリケーションまたは DLL によって呼び出される最初のWindows ソケット関数である必要があります。これにより、アプリケーションまたは DLL は、必要な Windows ソケットのバージョンを指定し、特定の Windows ソケット実装の詳細を取得できます。アプリケーションまたは DLL は、WSAStartup.

上記のリンクにも良い例が示されています。

また:

アプリケーションは、WSACleanup関数が正常に呼び出されるたびに関数WSAStartupを呼び出す必要があります 。これは、たとえば、アプリケーションが 3 回呼び出す場合は、WSAStartup 3 回呼び出す必要があることを意味しますWSACleanup。最初の 2 つの呼び出しはWSACleanup、内部カウンターをデクリメントする以外は何もしません。タスクの最後のWSACleanup呼び出しでは、タスクに必要なすべてのリソースの割り当てが解除されます。

于 2013-06-17T05:37:55.347 に答える