小编pun*_*ith的帖子

C++中的套接字协议缓冲区

我正在尝试在Linux平台上探索协议缓冲区(PB),我的编码语言是C++.我在协议缓冲区在线文档中找到了示例,但没有特定于套接字发送和接收(或者我完全错过了它:)).所以我决定在实际消息之前添加消息Length并通过套接字发送它.如果有人能提出比我计划做的更好的解决方案,我会很感激,并且还有任何现成的PB用于创建此类数据包.

但我仍然在服务器端遇到问题,我必须解码数据包.假设客户端发送一个10字节的数据包,其中前4个字节是数据包的长度; 但是在解码数据包之前不可能知道长度.因此,即使我读取前4个字节,我如何使用协议缓冲区推断半读取数据包的值.

c++ linux

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

将boost shared_ptr转换为void*,反之亦然

我可以转换boost shared_ptrvoid*和回boost::shared_ptr?我需要这个,因为我需要将共享指针和回调函数传递给在C中实现的计时器函数.在回调中我需要将void*指针转换回来boost:shared_ptr.这样做给了我错误.

我尝试了一个示例程序.

#include <iostream>
#include <boost/shared_ptr.hpp>
using namespace std;

class A
{

public:

    void f1() { cout<<"function f\n"; }
     inx aa;

private:
};

void f2 (void *arg) {

    boost::shared_ptr<A> b =  ( boost::shared_ptr<A> *)(arg);  //How to do this
}

int main ()
{
  boost::shared_ptr<A> a (new A());
  //void * ptr = (void *) &a;
  f2( (&a));

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

可以这样做boost::shared_ptr吗?

c++ boost

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

核心转储监控应用程序

我计划用 C/C++ 设计一个应用程序,该应用程序作为恶魔进程运行,并在核心转储发生时与应用程序日志文件一起收集它们。在 Linux 中,有什么方法可以让我知道应用程序是否崩溃了。

c c++ linux coredump

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

在c ++中重载new和delete

大家好,

我试图重载新的和删除以修复我的项目中的内存泄漏问题.但是遇到了一些编译错误.

目前这段代码有点破旧

这是我的hdr文件

#include <cstddef>
#include <iostream>
#include <list>
#include <stdarg.h>
#include <stdio.h>
using namespace std;
typedef unsigned int  DWORD;
void AddTrack(DWORD addr,  DWORD asize,  const char *fname, DWORD lnum);
char *OutputDebugString (const char *fmt, ...);
void RemoveTrack(DWORD addr);
void DumpUnfreed();

#ifdef _DEBUG
#define DEBUG_NEW new(__FILE__, __LINE__)
#define new DEBUG_NEW


   void *  operator new (unsigned int size, const char *file, int line)
  {
          void *ptr = (void *)malloc(size);
          AddTrack((DWORD)ptr, size, file, line);
          return(ptr);
  }
  /*inline void * operator new(unsigned …
Run Code Online (Sandbox Code Playgroud)

c++

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

标签 统计

c++ ×4

linux ×2

boost ×1

c ×1

coredump ×1