C++ TCP 发送错误:无法解析不存在的文件'/build/glibc-eX1tMB/glibc-2.31/sysdeps/unix/sysv/linux/send.c'

问题描述

我一直在尝试用 C++ 制作服务器。代码编译并运行,但函数“send”不起作用并给出如标题所示的错误。完整错误如下所示,来自 VSCode。

无法打开'send.c':无法读取文件'/build/glibc-eX1tMB/glibc-2.31/sysdeps/unix/sysv/linux/send.c'(错误:无法解析不存在的文件'/build/glibc-eX1tMB/glibc-2.31/sysdeps/unix/sysv/linux/send.c').

这是我的代码。如果从代码删除 send(),则一切正常。

#include <iostream>
#include <string.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <sys/socket.h>
#include <sys/types.h>

const int PORT = 5000;
const int MAX_CONNECTIONS = 8;


int main(){
    const char* openingMessage = "Welcome!\n";

    struct sockaddr_in address;

    address.sin_family = AF_INET;
    address.sin_addr.s_addr = INADDR_ANY;
    address.sin_port = htons(PORT);

    int socketS2G = socket(AF_INET,SOCK_STREAM,0); //AF_INET is IPv4,SOCK_STREAM is TCP and Protocol value for Internet Protocol(IP),which is 0.
    if(socketS2G == 0){
        std::cout << "Something went wrong!\n";
    } else {
        //bind address to socket objekt
        if(bind(socketS2G,(struct sockaddr *)&address,sizeof(address)) < 0){
            std::cout << "Could not bind address and port\n";
        } else {
            std::cout << "Port Now open\n";
            //listen to socket
            if (listen(socketS2G,3) < 0){
                std::cout << "Can't lisent to socket\n";
            } else {
                std::cout << "Listening on socket...\n";
                //accept requests from clients
                socklen_t addresslen = sizeof(address);
                while(true){
                    std::cout << "Ready to accept connection\n";
                    accept(socketS2G,&addresslen);
                    //THE LINE BELOW IS WHERE THINGS BEGIN TO GO WRONG
                    send(socketS2G,openingMessage,strlen(openingMessage),0);
                }
            }
        }
    }
    return 0;
}

错误仅在我尝试在端口 5000 连接到 127.0.0.1 时发生。我使用 telnet 命令连接到我的应用程序。

我感觉我可能缺少一个库,或者我调用错误函数。因此,我更新并升级了我的 Ubuntu 机器。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)