小编squ*_*les的帖子

如何防止.NET库在关闭时发送RST数据包

我正在做一些测试试图隔离库中的一些奇怪的行为(.NET).当我通过C++使用Winsock API并简单地调用closesocket()时,我看到windows端发送FIN/ACK数据包,远程端发回ACK数据包.这就是我称之为优雅的结果.但是,当用C#编程时,我没有看到我称之为优雅的结果.

在C#中,我打开我的套接字然后,当关闭它时,我看到Windows发送FIN数据包只有在第一次调用Socket.Shutdown()时.但是,无论如何,当我在C#中调用Socket.Close()时,会发送一个RST数据包并立即删除连接.这让我感到困惑,因为从我在线阅读的内容来看,TCP关闭过程应该是FIN/ACK - > ACK(实际上来自双方,但是现在,我只关心"我的"方面); 即,混合中根本不应该有RST数据包.从我所看到的,显然,只有当接收器不确定连接状态并且想要输出时才发送RST数据包.

为什么这个RST数据包是在.NET中的计划关闭时发送的,而不是在winsock API的计划关闭中发送的?有没有办法阻止在从.NET正常关闭期间传输RST数据包?

如果它很重要,在两个代码路径中,我在调用相应的close()方法之前读取套接字上的所有可用数据.

.net c# sockets

12
推荐指数
2
解决办法
2856
查看次数

CMake FetchContent 显示下载进度

使用 FetchContent 下载 git 存储库时是否有某种方法可以显示下载进度?

我试图清除FETCHCONTENT_QUIET,但没有任何作用。我不知道这是否可能。

cmake

11
推荐指数
2
解决办法
4755
查看次数

使用未知输出文件CMake ADD_CUSTOM_COMMAND

我有一个工具来生成一些cpp和头文件,并希望使用ADD_CUSTOM_COMMAND添加它以在构建期间自动执行它并将文件添加到项目中.问题是预先不知道(大多数)输出文件的名称.我如何添加这些文件?

c++ cmake

10
推荐指数
1
解决办法
586
查看次数

CMake 无法打开“ucrtd.lib”

我的问题与此类似:Problems generated Solution for VS 2017 with CMake,但该解决方案对我不起作用。

当在VS 2017 的开发人员命令提示符中运行cmake时,我收到错误(来自):CMakeError.log

链接:致命错误 LNK1104:无法打开文件“ucrtd.lib”[E:\Projects\My Project\VS\CMakeFiles\3.14.4\CompilerIdC\CompilerIdC.vcxproj]

但该文件ucrtd.lib位于该Windows Kits文件夹中。

回显%LIB%

D:\Program Files (x86)\Microsoft Visual Studio 2017 Community\VC\Tools\MSVC\14.16.27023\lib\x86;C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\lib\um \x86; C:\Program Files (x86)\Windows Kits\10\lib\10.0.17763.0\ucrt\x86 ;C:\Program Files(x86)\Windows Kits\10\lib\10.0.17763.0\um\x86;

目录“C:\ Program Files(x86)\ Windows Kits \ 10 \ lib \ 10.0.17763.0 \ ucrt \ x86 \” / w / b

libucrt.lib
libucrtd.lib
ucrt.lib
ucrtd.lib

而且我还尝试手动运行 中列出的构建命令CMakeError.log,它成功了,没有错误。

CL.exe /c /nologo /W0 /WX- /diagnostics:classic /Od …

cmake visual-studio

10
推荐指数
3
解决办法
1万
查看次数

使用与std :: function <void()>的unique_ptr参数绑定函数

我正在尝试使以下代码工作:

#include <cstdio>
#include <functional>
#include <string>
#include <memory>

using namespace std;

class Foo {
public:
    Foo(): m_str("foo") { }

    void f1(string s1, string s2, unique_ptr<Foo> p)
        {
            printf("1: %s %s %s\n", s1.c_str(), s2.c_str(), p->str());
        }

    void f2(string s1, string s2, Foo* p)
        {
            printf("2: %s %s %s\n", s1.c_str(), s2.c_str(), p->str());
        }

    const char* str() const { return m_str.c_str(); }

private:
    string m_str;
};

int main()
{
    string arg1 = "arg1";
    string arg2 = "arg2";
    Foo s;
    unique_ptr<Foo> ptr(new Foo); …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

9
推荐指数
2
解决办法
8957
查看次数

我应该使用add_subdirectory还是find_package?

我有一些项目遵循此依赖关系图

可执行的主库A,B和C.

Main // _ Depends_A_B_C

A // _ Depends_B

C // Depends_B

使用add_subdirectory将A,B和C放在全局范围并将它们全部链接在一起的超级项目对我来说更有意义吗?

PROJ /

CMakeList.txt //为b,a,c,主顺序中的每个目录添加add_subdirectory.

一个/

b /

C/

主要/

或者我应该为他们制作find_package解决方案的麻烦.

主要/

A///安装到系统

B///安装到系统

C///已安装到系统

这些库正在开发中,因此很高兴能够将它们全部视为我的ide中的一个项目,但我不想滥用add_subdirectory来适应我的特定开发工具.

cmake

9
推荐指数
1
解决办法
884
查看次数

Configure CMake in windows to use clang from command line to get modern OpenMP support

I have a small test project that uses OpenMP for parallelization. My target is to compile it so it produces .dll and .lib for libraries (because my real project links to external libraries distributed using these types), with support for OpenMP 4.5 or newer and do it from the command line so it can be done on a docker for testing and checking (the docker part is out of the scope of this question, it is just for reference on …

c++ dll cmake clang visual-studio

9
推荐指数
1
解决办法
270
查看次数

使用 CMake (Linux Mint) 编译时如何修复“CXX 编译器没有已知功能”

我正在尝试安装此插件:https ://github.com/CatxFish/obs-v4l2sink

\n\n

我遵循了所有步骤(安装了 QT,获取了 obs-studio 源代码,然后尝试构建插件):

\n\n
sudo apt install qtbase5-dev\n\ngit clone --recursive https://github.com/obsproject/obs-studio.git\n\ngit clone https://github.com/CatxFish/obs-v4l2sink.git\ncd obs-v4l2sink\nmkdir build && cd build\ncmake -DLIBOBS_INCLUDE_DIR="../../obs-studio/libobs" -DCMAKE_INSTALL_PREFIX=/usr ..\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是之后...

\n\n
 -- Configuring done\nCMake Error in CMakeLists.txt:\n  No known features for CXX compiler\n\n  ""\n\n  version .\n\n\n-- Build files have been written to: /home/********/obs-v4l2sink/build\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是我第一次使用cmake(而不是make)进行编译,我对编译不太了解。cmake在安装和尝试编译插件之间我是否错过了任何步骤?

\n\n

根据我在网上找到的信息,这就是我所做的:

\n\n
    \n
  • build-essential已经安装;
  • \n
  • c++cc并且全部都已安装;
  • \n
  • 尝试添加-DCMAKE_CXX_COMPILER=/usr/bin/cccmake命令行(与 c++ 相同);
  • \n
\n\n …

c++ cmake linux-mint

9
推荐指数
2
解决办法
2万
查看次数

Valgrind显示内存泄漏,空主,不包括标题

Lubuntu 15.10

我有内存泄漏的项目.我可以找到它们,所以我清理我的main.cpp文件,现在它看起来像:

int main()
{
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我用命令检查内存时: valgrind --leak-check=full --show-leak-kinds=all ./MyProgram > log1.txt 2>&1 我遇到了这个错误:

==5219== 
==5219== LEAK SUMMARY:
==5219==    definitely lost: 0 bytes in 0 blocks
==5219==    indirectly lost: 0 bytes in 0 blocks
==5219==      possibly lost: 728 bytes in 18 blocks
==5219==    still reachable: 44,676 bytes in 224 blocks
==5219==                       of which reachable via heuristic:
==5219==                         newarray           : 832 bytes in 16 blocks
==5219==         suppressed: 0 bytes in 0 blocks
==5219== 
==5219== For counts of …
Run Code Online (Sandbox Code Playgroud)

c++ valgrind memory-leaks

8
推荐指数
1
解决办法
3279
查看次数

将 Conan Include 链接到 VS Code

我目前在 C++ 项目中使用 Conansqlite_orm作为依赖项。

使用我个人的包含(myClass.hpp例如)时,Visual Studio Code 能够提供自动完成功能,但使用 Conan 的包含,则无法自动完成。

我正在寻找一种将 Conan 的包含路径链接到我的 VSCode 的方法,知道吗?

c++ cmake conan

8
推荐指数
2
解决办法
4154
查看次数

标签 统计

cmake ×7

c++ ×6

visual-studio ×2

.net ×1

c# ×1

c++11 ×1

clang ×1

conan ×1

dll ×1

linux-mint ×1

memory-leaks ×1

sockets ×1

valgrind ×1