小编Ocu*_*mer的帖子

boost:asio IPv4地址和UDP通信

解决问题 - 请参阅底部的解决方案说明

我正在尝试构建一个简单的应用程序来测试支持以太网的微控制器.我想要做的就是发送和接收小的UDP数据包.代码使用boost :: asio进行网络连接,非常简单.为了进行调试,我将所有初始化从构造函数中移出,这样我就可以检查每一步.这是我的身体:

    boost::system::error_code myError;

    boost::asio::ip::address_v4 targetIP;
    targetIP.from_string("10.1.1.75", myError);                 // Configure output IP address. HACKHACK--Hardcoded for Debugging
    std::cout << "GetIP - " << myError.message() << std::endl;
    std::cout << "IP: " << targetIP << std::endl;

    boost::asio::ip::udp::endpoint myEndpoint;                  // Create endpoint on specified IP.
    myEndpoint.address(targetIP);
    myEndpoint.port(0x1000);
    std::cout << "Endpoint IP:   " << myEndpoint.address().to_string() << std::endl;
    std::cout << "Endpoint Port: " << myEndpoint.port() << std::endl;

    boost::asio::io_service io_service;                         // Create socket and IO service, bind socket to endpoint.
    udp::socket socket(io_service);
    socket.open( …
Run Code Online (Sandbox Code Playgroud)

c++ windows network-programming boost-asio

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

在VS2012和Win32/64下将静态boost构建链接到静态库

我正在尝试构建一个静态库,作为网络设备的API发布.我可以成功编译和链接库以生成.lib输出文件,并将它们重定位到目录结构中,如下所示:

EyeLib
 L-Include
 |  L-PublicInterface.h
 L-Lib
 |  L-debug
 |  |   L-MyLib.lib
 |  |   L-MyLib.pdb
 |  L-release
 |      L-MyLib.lib
 L-MyLibConfig.cmake
Run Code Online (Sandbox Code Playgroud)

MyLibConfig.cmake文件非常简单,包含:

# the header file is relative to this cmake file, so get the path.
GET_FILENAME_COMPONENT( MyLib_TOPLEVEL_DIR ${CMAKE_CURRENT_LIST_FILE} PATH )
SET( MyLib_INCLUDE_DIR ${MyLib_TOPLEVEL_DIR}/include )

IF( WIN32 )
  FIND_LIBRARY( MyLib_DEBUG_LIBRARY MyLib ${MyLib_TOPLEVEL_DIR}/lib/debug )
  FIND_LIBRARY( MyLib_RELEASE_LIBRARY MyLib ${MyLib_TOPLEVEL_DIR}/lib/release )
  SET( MyLib_LIBRARIES optimized ${MyLib_RELEASE_LIBRARY} debug ${MyLib_DEBUG_LIBRARY} )
ENDIF( WIN32 )
IF( UNIX )
  FIND_LIBRARY( MyLib_LIBRARY MyLib ${MyLib_TOPLEVEL_DIR}/lib )
  SET( MyLib_LIBRARIES "${MyLib_LIBRARY}" )
  MARK_AS_ADVANCED( MyLib_LIBRARY …
Run Code Online (Sandbox Code Playgroud)

boost cmake static-libraries visual-studio visual-studio-2012

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

强制更新QTListWidget以添加/删除元素

我正在尝试围绕现有的管理控制台应用程序包装GUI.主要功能是搜索网络设备,该网络设备被给予超时并且在超时到期之前基本上是阻塞呼叫(使用sleep来执行阻塞).在这个例子中,呼叫是this->Manager->Search(...).

我的问题是我希望QListWidget在搜索过程中显示"正在搜索...",然后在搜索完成时更新结果.我点击该Search按钮的代码如下:

void ManagerGUI::on_searchButton_clicked()
{
  ui->IPList->clear();
  new QListWidgetItem(tr("Searching..."), ui->IPList);
  ui->IPList->repaint();
  this->Manager->Search(static_cast<unsigned int>(this->ui->searchTime->value()*1000.0));
  ui->IPList->clear();
  if(this->Manager->GetNumInList() != 0)
    this->displayFoundInList(this->Manager->GetFoundList());
  else
    new QListWidgetItem(tr("No Eyes Found"), ui->IPList);
  ui->IPList->repaint();
}
Run Code Online (Sandbox Code Playgroud)

当我按下按钮时,QListWidget IPList直到超时发生后才会更新(我假设直到此回调终止后).有没有人有什么建议?我的印象是,调用ui->IPList->repaint()会导致立即重绘列表.

附加信息:

  • QT版本5.1.0 32位
  • 使用VS2012编译
  • 在Win7 Pro 64位上运行(但要移植到OSX和Linux,所以请不要特定于win)

qt redraw qt5

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