C/C++ 套接字编程 - 没有可用于"ntdll!KiFastSystemCallRet()"的源

C/C++ Socket Programmming - No source available for "ntdll!KiFastSystemCallRet()"

本文关键字:ntdll KiFastSystemCallRet 的源 用于 套接字 C++ 编程      更新时间:2023-10-16

我开始使用winsock学习套接字编程,因为我想用C语言通过TCP协议创建客户端 - 服务器通信。

在 Eclipse 中构建服务器端程序时,我在创建套接字时出现错误。编译器中的错误显示:"ntdll!KiFastSystemCallRet()".

我已经添加了包含 Ws2_32.lib 并在 winsdos 7(64 位)和 windows xp(32 位)上尝试了代码,但仍然收到相同的错误?

服务器端代码:

/*
    Create a TCP socket
*/
#include<stdio.h>
#include<winsock2.h>
#pragma comment(lib,"ws2_32.lib") //Winsock Library 
int main(int argc , char *argv[])
{
    WSADATA wsa;
    SOCKET s;
    printf("nInitialising Winsock...");
    if (WSAStartup(MAKEWORD(2,2),&wsa) != 0)
    {
        printf("Failed. Error Code : %d",WSAGetLastError());
        return 1;
    }
    printf("Initialised.n");
    if((s = socket(AF_INET , SOCK_STREAM , 0 )) == INVALID_SOCKET)
    {
        printf("Could not create socket : %d" , WSAGetLastError());
    }
    printf("Socket created.n");
    return 0;
}

@user3139957 -- "编译器中的错误说:没有可用于ntdll!KiFastSystemCallRet()的源代码"

我真的怀疑这一点。 这是来自内核深处的系统调用。 你的意思是调试器这么说吗? 也许日食已经崩溃并且调试器正在尝试接管?

我假设您使用的是Visual C++,但是什么版本? 您可以将输出捕获为文本或图像吗?

顺便说一句,socket() 的第三个参数最好是 IPPROTO_TCP 或 IPPROTO_UDP,而不是 0。

除此之外,它看起来还不错。