小编Avi*_*hek的帖子

当我将数据写入阻塞套接字时会发生什么,比另一边读取更快?

假设我将数据写得非常快[我将内存中的所有数据]写入阻塞套接字.进一步假设对方将读取数据非常慢[如每次读取之间的睡眠时间为1秒].

在这种情况下,写作方面的预期行为是什么?写操作块是否会在另一侧读取足够的数据,否则写入会返回错误,如连接重置?

sockets buffer tcp blocking

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

哪个protobuf优化?

使用谷歌的协议缓冲编译器的c ++,不清楚哪个更快:优化速度:

option optimize_for = SPEED;
Run Code Online (Sandbox Code Playgroud)

或优化光运行时间:

option optimize_for = LITE_RUNTIME;
Run Code Online (Sandbox Code Playgroud)

如果速度更快,是什么让它更快?有没有人有关于这个问题的硬数据?

c++ optimization protocol-buffers

15
推荐指数
1
解决办法
6833
查看次数

从Poco HTTPClientSession读取异步

使用HTTPClientSession的常用示例代码如下所示:

Poco::Net::HTTPClientSession session(uri.getHost(), uri.getPort());
std::ostream& ostr = session.sendRequest(req);

// Receive the response.
Poco::Net::HTTPResponse res;
std::istream& rs = session.receiveResponse(res);
Run Code Online (Sandbox Code Playgroud)

问题是,如何从rs输入流中读取整个数据,同时确保所有操作都是非阻塞的,以便我可以随时取消它们?

c++ asynchronous http nonblocking poco-libraries

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

是否可以使std :: string始终保持小写字符串?

是否可以使std :: string始终保持小写字符串?这是我将如何使用它:

typedef std::basic_string<...> lowercase_string;

void myfunc()
{
  lowercase_string s = "Hello World"; // notice mixed case
  printf(s.c_str());                  // prints "hello world" in lowercase
  std::string s2 = s;
  printf(s2.c_str());                 // prints "hello world" in lowercase
}
Run Code Online (Sandbox Code Playgroud)

c++ string boost stl

6
推荐指数
1
解决办法
1088
查看次数

如何从不同的进程关闭窗口

我有一个ac#应用程序,我想指示从一个不同的进程很好地关闭.我也希望能够让它打开它的主窗口.我有一个对它的主窗口句柄的引用.

我知道我可以使用精心设计的方案,如远程处理或WCF.问题是我可以使用更简单的机制(如窗口消息)或c#应用程序中窗口的OnClose事件处理程序来实现

c# windows wpf windowing

5
推荐指数
1
解决办法
4151
查看次数

在 REST API 中返回绝对 URI 和相对 URI

假设DogManagementPro程序是一个以客户端/服务器架构编写的应用程序,购买它的客户应该在自己的PC上运行服务器,并在本地或远程访问它。

假设我想在 DogManagementPro REST API 中支持“列出所有狗”操作。

所以http://localhost/DogManagerPro/api/dogs现在GET应该获取以下响应:

<dogs>
  <dog>http://localhost/DogManagerPro/api/dogs/ralf</dog>
  <dog>http://localhost/DogManagerPro/api/dogs/sparky</dog>
</dogs>
Run Code Online (Sandbox Code Playgroud)

我想在本地 LAN 上远程访问它,[我机器的本地 IP 是 192.168.0.33] 应该通过 GEThttp://192.168.0.33:1234/DogManagerPro/api/dogs获取什么?

应该是:

<dogs>
  <dog>http://localhost/DogManagerPro/api/dogs/ralf</dog>
  <dog>http://localhost/DogManagerPro/api/dogs/sparky</dog>
</dogs>
Run Code Online (Sandbox Code Playgroud)

也许:

<dogs>
  <dog>http://192.168.0.33/DogManagerPro/api/dogs/ralf</dog>
  <dog>http://192.168.0.33/DogManagerPro/api/dogs/sparky</dog>
</dogs>
Run Code Online (Sandbox Code Playgroud)

?

有些人认为我应该通过只返回一个路径元素来完全解决这个问题:

<dogs>
  <dog>/DogManagerPro/api/dogs/ralf</dog>
  <dog>/DogManagerPro/api/dogs/sparky</dog>
</dogs>
Run Code Online (Sandbox Code Playgroud)

什么是最好的方法?

api rest http hyperlink

5
推荐指数
1
解决办法
3712
查看次数

快速增加数字为C中的mod 16

获得可被16整除的最近,非小数字的最佳方法是什么?

我提出方法看起来并不优雅或快速

int non_smaller_int_divisible_by_16(int x)
{
  return x + ((16 - (x % 16)) % 16);
}
Run Code Online (Sandbox Code Playgroud)

预期的结果是

result | X values
-------|----------
16     | 1,2,..., 16
32     | 17, 18, ... 32
48     | 33, 34, ..., 48
Run Code Online (Sandbox Code Playgroud)

等等

c math video bit-manipulation modulus

4
推荐指数
2
解决办法
612
查看次数

ostream :: write实际写入了多少字节?

假设我向ostream :: write发送一个大缓冲区,但只有它的开头部分实际上已成功写入,其余部分未写入

int main()
{
   std::vector<char> buf(64 * 1000 * 1000, 'a'); // 64 mbytes of data
   std::ofstream file("out.txt");
   file.write(&buf[0], buf.size()); // try to write 64 mbytes
   if(file.bad()) {
     // but suppose only 10 megabyte were available on disk
     // how many were actually written to file???
   }
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

什么ostream函数可以告诉我实际写了多少字节?

c++ buffer iostream

4
推荐指数
1
解决办法
9938
查看次数

IN_ADDR结构在android中奇怪定义

我试图在Android上编译网络代码并看到编译错误.我正在使用的结构是ip_mreq_source,它应该在头文件中定义,如下所示:

struct ip_mreq_source {
  struct in_addr imr_multiaddr;
  struct in_addr imr_sourceaddr;
  struct in_addr imr_interface;
};
Run Code Online (Sandbox Code Playgroud)

其中in_addr应定义为:

typedef uint32_t in_addr_t;
struct in_addr
  {
    in_addr_t s_addr;
  };
Run Code Online (Sandbox Code Playgroud)

来自基于Android的编译器的g ++(GCC 4.4.3)中出现的详细错误:

    arm-linux-androideabi-g++ -MMD -MP -MF groupsock/GroupsockHelper.o.d.org -fpic
 -ffunction-sections -funwind-tables -fstack-protector -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ 
-D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__  -Wno-psabi -march=armv5te -mtune=xscale -msoft-float 
-fno-exceptions -fno-rtti -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-
limit=64 -Igroupsock/include -Igroupsock/../UsageEnvironment/include -Iandroid-
ndk-r5b/sources/cxx-stl/system/include -Igroupsock -DANDROID  -Wa,--noexecstack 
-DANDROID_NDK -Wall -fexceptions  -O2 -DNDEBUG -g   -Iandroid-8/arch-arm/usr/include -c  
groupsock/GroupsockHelper.cpp -o groupsock/GroupsockHelper.o && rm -f 
groupsock/GroupsockHelper.o.d && mv groupsock/GroupsockHelper.o.d.org 
groupsock/GroupsockHelper.o.d
groupsock/GroupsockHelper.cpp: In …
Run Code Online (Sandbox Code Playgroud)

c c++ android struct android-ndk

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

在boost iostreamfiltering_ostream中,sync()、strict_sync()和flush()有什么区别?

考虑一个简单的计数过滤器:

class CountableOstreamFilter : public boost::iostreams::multichar_output_filter {
public:
    CountableOstreamFilter(): m_written(0) { 
    }

    template<typename Sink>
    std::streamsize write(Sink& dest, const char* s, std::streamsize n)
    {
            auto result  = boost::iostreams::write(dest, s, n);
            assert(n == result);
            m_written += result;
            return result;
    }

    inline std::streamsize writtenBytes() const {
        return m_written;
    }

private:
    std::streamsize m_written;
};
Run Code Online (Sandbox Code Playgroud)

并这样使用它:

boost::iostreams::filtering_ostream counted_cout;
counted_cout.push(CountableOstreamFilter());
counted_cout.push(std::cout);
counted_cout << "hello world";
Run Code Online (Sandbox Code Playgroud)

调用sync()、strict_sync() 或flush() 之间有什么区别?counted_cout.sync(); // 与此调用有什么不同 counted_cout.strict_sync(); // 调用 counted_cout.flush(); // 这个调用?

我使用的是boost 1.50.0

c++ boost iostream boost-iostreams

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