我编写了一个Windows服务,允许我远程运行和停止应用程序.这些应用程序使用CreateProcess运行,这对我有用,因为它们中的大多数只执行后端处理.最近,我需要运行将GUI呈现给当前登录用户的应用程序.如何在C++中编码以允许我的服务找到当前活动的桌面并在其上运行GUI?
我需要通过可能有损的网络将数据包从一个主机发送到另一个主机.为了最小化数据包延迟,我不考虑TCP/IP.但是,我希望最大化吞吐量uisng UDP.应该使用的UDP数据包的最佳大小是多少?
以下是我的一些注意事项:
网络中交换机的MTU大小为1500.如果我使用大数据包,例如8192,则会导致碎片.丢失一个片段会导致丢失整个数据包,对吧?
如果我使用较小的数据包,我将产生UDP和IP头的开销
如果我使用一个非常大的数据包,我可以使用的最大数据包是多少?我读到最大的数据报大小是65507.我应该使用什么缓冲区大小来发送这样的大小?这有助于提高我的吞吐量吗?
常见操作系统(例如Windows,Linux等)支持的典型最大数据报大小是多少?
更新:
数据的一些接收器是未实现TCP/IP堆栈的嵌入式系统.
我知道这个地方到处都是那些非常喜欢使用可用内容的人.但我希望能得到更好的答案,而不仅仅关注MTU.
当我们在Unix中执行fork时,会继承打开的文件句柄,如果我们不需要使用它们,我们应该关闭它们.但是,当我们使用库时,可能会打开文件句柄,我们无法访问该句柄.我们如何检查这些打开的文件句柄?
在Windows中,是否有一个工具来监视进程同步对象的状态?即.
更好的是,记录哪个线程做了什么,例如."线程#5421信号事件 - testevt"
给出一些MathML内容:
<apply>
<eq/>
<ci>c</ci>
<apply>
<plus/>
<ci>a</ci>
<ci>b</ci>
</apply>
</apply>
Run Code Online (Sandbox Code Playgroud)
和
std::map<std::string,std::double> cal;
cal["a"] = 1.;
cal["b"] = 2.;
cal["c"] = 0; // does not matter what c is
Run Code Online (Sandbox Code Playgroud)
我希望评估MathML并检索结果.有没有办法做到这一点?
我有一个Visual C++控制台应用程序(即子系统:控制台),它可以向控制台输出有用的诊断消息.
但是,我希望在大多数情况下保持应用程序最小化,而不是最小化到任务栏,在系统托盘上显示为一个漂亮的图标.我还想在单击系统托盘图标时恢复控制台.
我该如何更改程序来执行此操作?
我正在寻找一个Boost :: type_traits精神的模板元程序,它将返回编译器是大端还是小端.有点像is_big_endian<T>
.我怎么写这个?
使用它是通过基于字节序实现特定的模板特化来创建一个自动适应环境的库.例如,
template<>
void copy_big_endian_impl<true>(T *dst, const T *src, size_t sz) {
// since already big endian, we just copy
memcpy(dst, src, sz*sizeof(T));
}
template<>
void copy_big_endian_impl<false>(T *dst, const T *src, size_t sz) {
for (int idx=0; idx<sz; idx++)
dst[idx] = flip(src[idx];
}
Run Code Online (Sandbox Code Playgroud)
这将允许is_big_endian作为模板参数传递.
POSIX用于struct timeval
表示时间间隔.
struct timeval
{
time_t tv_sec;
unsigned tv_usec;
};
Run Code Online (Sandbox Code Playgroud)
GHS Integrity Time
以下列方式表示:
struct Time
{
time_t Seconds;
unsigned Fraction;
};
Run Code Online (Sandbox Code Playgroud)
例如,0.5sec表示为0x80000000
,0.25sec表示为0x40000000
.
什么是要转换的最佳方式timeval
来Time
?
(ps答案不是将POSIX库链接到Integrity并使用POSIX调用.)