套接字编程问题与recv()接收部分消息

2024-04-19

我有一个正在接收流股票报价数据的套接字。但是,我似乎收到了很多被截断的消息,或者看起来像是被截断的消息。这是我接收数据的方式:

if((numbytes = recv(sockfd, buf, MAXDATASIZE-1, 0)) == -1) {
    perror("recv()");
    exit(1);
}
else {
    buf[numbytes] = '\0';
    // Process data
}

Can recv()只收到所发送内容的部分消息?

我的感觉是我可能需要另一个循环recv()接收直到发送完整消息的调用。我知道我拥有的 libcurl 实现(我认为不可能在这里使用 libcurl)有一个外循环:

// Read the response (sum total bytes read in tot_bytes)
for(tot_bytes=0; ; tot_bytes += iolen)
{  
    wait_on_socket(sockfd, 1, 60000L);
    res = curl_easy_recv(curl, buf + tot_bytes, sizeof_buf - tot_bytes, &iolen);

    if(CURLE_OK != res) {
        // printf( "## %d", res );
        break;
    }
}

我需要一个recv()类似于 libcurl 示例的循环(可验证有效)?


我们还可以将标志传递给recv等待所有消息到达。当您知道要接收的字节数时它就会起作用。您可以像这样传递命令。

numbytes =  recv(sockfd, buf, MAXDATASIZE-1, MSG_WAITALL);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

套接字编程问题与recv()接收部分消息 的相关文章

  • C# Socket.receive连续接收0字节且循环中不阻塞

    我正在尝试用 C 编写一个最简单的多线程 TCP 服务器 它接收来自多个客户端的数据 每次连接新客户端时 都会建立套接字连接 并将套接字作为参数传递给新类函数 之后运行 while 循环并接收数据 直到客户端连接为止 这里的问题是 sock
  • return 语句是否为按值返回的函数创建临时对象?

    当我学习 C 11 右值引用和移动语义时 我开始对函数如何返回值来初始化变量感到困惑 看下面的例子 Widget makeWidget Widget w return w Widget w1 makeWidget 这里我假设没有 RVO 即
  • Lambda、封闭变量、显示类、可序列化性和流行层

    我已经为 Compact Framework 实现了一个流行层 包括BinaryFormatter 类似序列化器 我希望能够在适当的情况下序列化编译器生成的类 这些类是由 lambda 和迭代器等产生的 这样如果 例如 lambda 及其封
  • Qml 中的 FileDialog 在发布中不起作用

    我正在与以下项目合作Qt Quick Control 2 当我尝试在调试模式下运行软件时 FileDialog qml 可以完美打开 但是当我将其部署为发布模式时 它无法工作 这是我的代码 import QtQuick 2 4 import
  • 如何将 list 对象附加到另一个对象

    在 C 中 我有两个list
  • 以 ASCII 字符串形式获取 MemoryStream 内容的快速方法

    我在 MemoryStream 中有一个 JSON 字符串 我使用以下代码将其作为 ASCII 字符串获取 MemoryStream memstream new MemoryStream Write a JSON string to mem
  • 在 C++ 中重用异常处理代码

    我有这两个函数 具有重复的异常处理 其唯一目的是显示错误消息 void func1 noexcept try do task do another task catch const std out of range e show msg O
  • C# 中的异步方法如何工作?

    我在我的一些项目中使用异步方法 我喜欢它 因为它使我的应用程序更具可扩展性 但是 我想知道异步方法如何在后台真正工作 NET 或 Windows 如何知道调用已完成 根据我进行的异步调用的数量 我可以看到创建了新线程 但并不总是 为什么 此
  • 这个对象的内存会是什么样子?

    我想知道这个类 它的对象 的内存布局是什么样的 class MyClass string myString int myInt public MyClass string str int i myString str myInt i MyC
  • 如何对具有无效值的属性使用 JSON.net 的默认值

    我正在使用 Newtonsoft JSON 库来反序列化来自 Web 服务的响应 问题是某些字段包含无效值 例如 一条记录上的一个字段包含一个 T 表示该字段应该是数字 我想做的是将无效字段的值设置为 null 或其他默认值 我的所有属性都
  • 委托:方法名称预期错误

    我正在尝试让以下简单的委托示例正常工作 根据我从中取出的一本书 应该没问题 但我得到了Method name expected error namespace TestConsoleApp class Program private del
  • cuda中有模板化的数学函数吗? [复制]

    这个问题在这里已经有答案了 我一直在寻找 cuda 中的模板化数学函数 但似乎找不到 在普通的 C 中 如果我调用std sqrt它是模板化的 并且将根据参数是浮点数还是双精度数执行不同的版本 我想要这样的 CUDA 设备代码 我的内核将真
  • 验证仅适用于数组的第一项

    给定这个模型代码 Required Display Name Name public string Name get set 以下查看代码有效 Html LabelFor model gt model Name Html TextBoxFo
  • 获取当前时间(以小时和分钟为单位)

    我正在尝试从系统收集信息 并且需要获取当前时间 以小时和分钟为单位 目前我有 date awk print 4 输出如下 16 18 54 怎样才能把秒数去掉呢 提供格式字符串 date H M Running man date将给出所有格
  • 如何使用 GCC 在 C 上编译库?

    我用这些文件创建了一个库pila h and pila c 我编译文件pila c with gcc pila c c这个库运行良好 我已经测试过了 然后我又做了一个图书馆 这个库有文件pila funciones extra h and
  • 使用C#在SQL Server上执行sql文件

    我有很多程序 视图 函数等文件 我想在 SQL Server 2005 2008 上的适当数据库中执行这些文件 创建组件 还有一点是我想使用 C 来执行它们 另一点需要提及的是 我希望应用程序也可以在远程 SQL Server 上执行此文件
  • OpenMP 动态调度与引导调度

    我正在研究 OpenMP 的调度 特别是不同的类型 我了解每种类型的一般行为 但澄清一下何时进行选择会很有帮助dynamic and guided调度 英特尔的文档 https software intel com en us articl
  • C# - 平移光标

    我正在 PictureBox 控件中实现大图像的平移 并且设置适当的方向平移光标没有问题 但是 我似乎找不到用于平底锅原点的图像 内部带有箭头的圆圈 我在哪里可以找到它 我觉得image您正在寻找的内容未包含在框架中 每个应用程序都使用自己
  • 如何在 C++ 中打印变量的名称? [复制]

    这个问题在这里已经有答案了 可能的重复 在C中获取变量名称的编程方法 https stackoverflow com questions 1623111 programmatic way to get variable name in c
  • 如何为单个函数设置 ICC 属性“fp-model precision”,以防止关联优化?

    我正在实施卡汉求和 http en wikipedia org wiki Kahan summation algorithm 在支持 gcc47 gcc48 clang33 icc13 和 icc14 编译的项目中 作为该算法的一部分 我想

随机推荐

  • didUpdateToLocation 未调用

    我想接收位置更新 我已将位置委托添加到标头 interface AppDelegate UIResponder
  • Python约束非线性优化

    python 中约束非线性优化的推荐包是什么 我试图解决的具体问题是 我有一个不为人知的X Nx1 我有M Nx1 u向量和M NxN s矩阵 max 5th percentile of ui T X i in 1 to M st 0 lt
  • 将数据更新到插入正确行的数据库中

    我在将数据更新到数据库时遇到问题 当我运行代码时 它将输入以3061 to 3070它应该从哪个开始3001 to 3010 当我尝试这个时 for next day program id in zip nextday list progr
  • 使用 HttpHandler 流式传输数据库图像

    很长一段时间以来 当我在本地计算机上处 理涉及数据库图像的 Web 应用程序项目时 我注意到一些烦人的事情 我所说的本地是指我的工作站上装有 VS 2008 和 SQL Server 2005 的典型环境 每当我使用 HttpHandler
  • HSQL 序列的语法问题:“NEXTVAL”而不是“NEXT VALUE”

    我在 Jetty 服务器上部署了 Web 应用程序 并连接到位于 HSQLDB 服务器上的 HSQLDB 数据库 当我尝试创建实体时出现此错误 错误 org hibernate util JDBCExceptionReporter 意外的标
  • 我应该使用哪些库在 python 中进行线性编程? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 快速搜索 python 线性编程 会出现很多搜索结果 例如this one http wiki pyt
  • 等距 DIV 的流体宽度 + 最后一行左对齐

    我在流体布局和文本对齐中有固定宽度的框 使用此发布的解决方案来调整它们 等距 DIV 的流体宽度 https stackoverflow com questions 6865194 fluid width with equally spac
  • 使用 CMake 链接 .s 文件

    我有一个我想使用的 c 函数 但它是用Intel编译器而不是gnu C编译器 我在用着cmake构建程序 我实际上正在使用ROS因此rosmake但基础是cmake所以我认为这更多是一个 cmake 问题而不是ROS问题 假设使用构建的文件
  • 在iOS中使用AVPlayer你可以知道当前的.ts文件或编码器的当前时间戳吗?

    由于我们无法从 AVPlayer 中获取隐藏式字幕数据或字幕数据 因此我们正在研究其他触发方法 例如时间码或至少了解当前活动的 ts 文件 我在文档中找不到任何内容 并且播放器的 CMTime 没有给我嵌入 m3u8 文件中的时间码 NSL
  • 在 NetBeans 中格式化完整项目

    要在编辑器中格式化文件 请按 Alt Shift F 有没有办法在 NetBeans 中格式化完整的项目 6 8 如果这有什么区别 选择要缩进的文件夹 然后 转到 在 netbeans 菜单中 源 格式
  • Windows 10 上的 ContextMenu 和 Popup WPF 控件对齐错误

    这确实是一个奇怪的问题 我希望有人知道如何解决 情况 我们的 WPF 项目有一个表单 我们在其中显示上下文菜单 ContextMenu 控件 和弹出窗口 Popup 控件 以响应某些用户操作 在大多数情况下 它发生在鼠标单击某个文本块时 这
  • jquery-mobile 是“移动优先”吗?

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我读过 Luke WROBLEWSKI 所著的 移动优先 一书以及许多其他有关该主题的读物 我是一名网
  • 从 C# WPF 中的组合框中获取选定的值

    我刚刚开始使用 WPF 表单而不是 Windows Forms 表单 在 Windows 窗体表单中我可以这样做 ComboBox SelectedValue toString 这会很好用 我如何在 WPF 中执行此操作 好像没有这个选项啊
  • 将 CRC8 从 C 翻译为 Java

    我收到一段 C 代码 它计算字节数组的 CRC8 值 我需要将其翻译成Java 这里的C Code CRC POLYNOM 0x9c CRC PRESET 0xFF unsigned int CRC CRC PRESET for i 0 i
  • 队列触发函数内部如何获取队列messageid

    我正在尝试获取 Azure Web 作业队列中当前处理消息的消息 ID 找不到任何有关如何获取它的正确文档 public static void ProcessQueueMessage QueueTrigger testingQueue T
  • Angular 安装命令的真正作用是什么?

    我可以理解 执行 install 命令后 Angular 将安装在我们的机器上 但执行以下命令后 我无法在 ProgramFiles 文件夹下找到 Angular 文件 npm install g angular cli 当我们安装Visu
  • 必须部署服务引用中的哪些文件才能使用 WCF 服务?

    我担心文件应该包含在 NET 项目的部署中 我有使用 WCF 服务的控制台应用程序 WCF 服务通过 HTTP 运行 我是否需要部署 Service References 文件夹中的所有 XSD SVCINFO WSDL 和 SVCMAP
  • MVC4 - 如何渲染视图字符串?

    我正在使用 MVC4 我想将我的视图呈现为字符串 现有的答案对我没有帮助 可能是因为 MVC 版本差异 这个解决方案帮助了我并 拯救了我的一天 https coderwall com p 8ie5jg https coderwall com
  • 是否有 wkhtmltopdf 选项可以转换 html 文本而不是文件?

    我最近偶然发现了 wkhtmltopdf 发现它是在浏览器中将 html 即时转换为 pdf 的绝佳工具 典型的用法 在 Windows 中 是 wkhtmltopdf exe some option div Some html b for
  • 套接字编程问题与recv()接收部分消息

    我有一个正在接收流股票报价数据的套接字 但是 我似乎收到了很多被截断的消息 或者看起来像是被截断的消息 这是我接收数据的方式 if numbytes recv sockfd buf MAXDATASIZE 1 0 1 perror recv