从套接字读取缓冲区

2023-11-30

我正在用 c 编写简单的服务器/客户端,其中服务器临时存储来自客户端的消息并在客户端请求时检索它。

问题是当客户端从服务器接收消息时,缓冲区的行为有点奇怪。 我所做的只是读取从服务器接收的数据并将其打印在屏幕上,但不知何故缓冲区被覆盖的程度超过了缓冲区的最大大小

在客户端

while((byteRead = recv(ssock, buffer, MAXBUF, 0)) > 0)
{
   if(byteRead <= 0)
       break;
    printf("%s", buffer);
}

其中 MAXBUF 是 256。它保留了一些垃圾,所以我检查了缓冲区中的字符串大小 令人惊讶的是

printf("%d READ vs %d buffer strlen \n", byteRead, strlen(buffer))

显示 byteRead 为 256,但缓冲区的字符串长度为 262。

任何想法??

P.s在服务器端,它正确读取文件并将其发送到套接字。


recv不在字符串末尾放置空终止符(同时printf %s假设有一个)。

你必须使用byteRead来确定字符串的长度。如果您想使用类似的函数,请添加一个空终止符printf,但要确保您的缓冲区有足够的空间,即使在最大大小的读取中也是如此。

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

从套接字读取缓冲区 的相关文章

  • 如何在 VC++ CString 中验证有效的整数和浮点数

    有人可以告诉我一种有效的方法来验证 CString 对象中存在的数字是有效整数还是浮点数吗 Use tcstol http msdn microsoft com en us library w4z2wdyc aspx and tcstod
  • 在 HKCR 中创建新密钥有效,但不起作用

    我有以下代码 它返回 成功 但使用两种不同的工具使用搜索字符串 3BDAAC43 E734 11D5 93AF 00105A990292 搜索注册表不会产生任何结果 RegistryKey RK Registry ClassesRoot C
  • 尝试了解使用服务打开对话框

    我已经阅读了有关使用 mvvm 模式打开对话框的讨论 我看过几个使用服务的示例 但我不明白所有部分如何组合在一起 我发布这个问题寻求指导 以了解我应该阅读哪些内容 以更好地理解我所缺少的内容 我将在下面发布我所拥有的内容 它确实有效 但从我
  • 在 CPP 类中将 C 函数声明为友元

    我需要在 C 函数中使用类的私有变量 我正在做这样的事情 class Helper private std string name public std getName return name friend extern C void in
  • Grpc - 将消息从一个客户端发送到连接到同一服务器的另一个客户端

    是否可以将消息从一个客户端发送到连接到同一服务器的另一个客户端 我想将数据从一个客户端发送到服务器然后发送到特定客户端 我想我需要获取客户端 ID 但我不知道如何获取此 ID 以及如何从服务器将此消息发送到该客户端 我这里有一个样本 这是一
  • 如何在类文件中使用 Url.Action() ?

    如何在 MVC 项目的类文件中使用 Url Action Like namespace 3harf public class myFunction public static void CheckUserAdminPanelPermissi
  • 前向声明类型和“已声明为类类型的非类类型”

    我对以下代码有问题 template
  • 未找到 Boost 库,但编译正常

    我正在尝试在 C 中使用 boost 的文件系统 使用时看起来编译没问题 c c Analyse c o Analyse o g W Wall L usr local lib lboost filesystem lboost system
  • 传递 constexpr 对象

    我决定给予新的C 14的定义constexpr旋转并充分利用它 我决定编写一个小的编译时字符串解析器 然而 我正在努力保持我的对象constexpr将其传递给函数时 考虑以下代码 include
  • 如何将 .txt 文件中的数据转换为 xml? C#

    我在一个文本文件中有数千行数据 我想通过将其转换为更容易搜索的内容来轻松搜索 我希望 XML 或其他类型的大型数据结构 尽管我不确定它是否是最好的对于我的想法 每行的数据如下所示 第 31 册 托马斯 乔治 32 34 154 每本书都不是
  • RestSharp获取序列化输出

    我正在寻找一种方法来访问 AddBody 调用的序列化结果 我正在使用内置的 RestSharp 序列化器 例子 class Foo public string FooField void SendRecord var f new Foo
  • 在 C# 中,如何根据在 gridview 行中单击的按钮引用特定产品记录

    我有一个显示产品网格视图的页面 该表内有一列 其中有一个名为 详细信息 的超链接 我想这样做 以便如果用户单击该特定产品的详细信息单元格 将打开一个新页面 提供有关该产品的更多信息 我不确定如何确定哪个Product记录链接的详细信息以及我
  • 是否使用 C# 数据集? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对 C 中的数据集概念有点困惑 编码 ASP NET 站点 但这并不重要 在我的阅读中 我了解到它们 本质上 用作我的应用程序和我的
  • UDP接收和发送Matlab

    我目前正在努力从外部设备接收数据包 然后将数据发送到另一个设备 我有一个工作 Simulink 模型 但我不知道如何在 Matlab 中对其进行编码 Matlab 中 UDP 接收块的参数如下图所示UDP 接收参数 https i stac
  • 如果输入被重定向则执行操作

    我想知道如果我的输入被重定向 我应该如何在 C 程序中执行操作 例如 假设我有已编译的程序 prog 并且我将输入 input txt 重定向到它 我这样做 prog lt input txt 我如何在代码中检测到这一点 一般来说 您无法判
  • C++ - 多维数组

    处理多维数组时 是否可以为数组分配两种不同的变量类型 例如你有数组int example i j 有可能吗i and j是两种完全不同的变量类型 例如 int 和 string 听起来您正在寻找 std vector
  • Visual Studio 2015:v120 与 v140?

    仅供参考 Win10 x64 我今天开始尝试 Visual Studio 2015 在弄清楚如何运行 C C 部分后 我尝试加载一个大型个人项目 该项目使用非官方的glsdk http glsdk sourceforge net docs
  • C++:为什么 numeric_limits 对它不知道的类型起作用?

    我创建了自己的类型 没有任何比较器 也没有专门化std numeric limits 尽管如此 由于某种原因 std numeric limits
  • WPF DataGrid / ListView 绑定到数组 mvvm

    我们假设你有 N 个整数的数组 表示行数的整数值 在模型中 该整数绑定到视图中的 ComboBox Q1 如何将数组 或数组的各个项目 绑定到 DataGrid 或 ListView 控件 以便 当您更改 ComboBox 值时 只有那么多
  • MySqlConnectionStringBuilder - 使用证书连接

    我正在尝试连接到 Google Cloud Sql 这是一个 MySql 解决方案 我能够使用 MySql Workbench 进行连接 我如何使用 C 连接MySqlConnectionStringBuilder 我找不到提供这三个证书的

随机推荐

  • 使用 Bcrypt 加密 InMemoryAuthentication 密码

    在对 UserDetailsS ervice 的自定义实现使用 Bcrypt 之前 我首先想看看是否可以在内存数据库中使用它 package com patrick Security import org springframework b
  • MYSQL DBDump 错误信息

    我需要获得 DBDUMP 我正在使用 MySQL 当我尝试获取数据库转储时出现以下错误 任何线索它做错了什么 C Program Files MySQL MySQL Server 5 1 bin gt mysqldump u root p
  • 访问 .jar 文件内的文件[重复]

    这个问题在这里已经有答案了 可能的重复 如何从 Java jar 文件中读取资源文件 经过几个小时的谷歌搜索后 我开始对此彻底疯狂 我还在网站上看到了该问题的各种变体 但似乎无法使其发挥作用 JFrame 需要从 ini 文件读取数据 我创
  • Zend 验证器和错误消息:addValidator 和 addErrorMessage

    如果我有一个附加了多个验证器的表单元素 本例中为 3 个 我将如何使用addErrorMessage当每个唯一的验证器失败时创建自定义错误消息 有没有办法为每个验证器添加自定义消息 element new Zend Form Element
  • 带有 base64 数据内容的 HTML5 对象标签导致 Chrome 崩溃

    我正在使用 HTML5 FileReader 读取本地文件 然后 我想在上传到服务器之前立即在浏览器中显示文件内容 我读取该文件并尝试显示它 如下所示 var reader new FileReader reader onloadend f
  • 将变量编号增加 1

    我的代码中有大量字符都声明为比其他字符高 1 例如米1 米2 米3 有什么办法可以将我在 for 循环中搜索的数字增加 1 吗 我有一长串字母 我需要检查其中是否有与个人匹配的字母 但由于情况限制 我无法使用字符串 a1 是我正在寻找的特定
  • 名称错误“html”未使用 beautifulsoup4 定义

    我的 python 3 4 4 代码是 import urllib request from bs4 import BeautifulSoup from html parser import HTMLParser urls file C U
  • 如何在 Symfony 3.4 中从另一个包配置一个包?

    我有一个 Symfony 包 我想让这个捆绑包更改其他捆绑包的配置 例如 我想设置 Doctrine 的默认命名策略或创建我的包使用的自定义独白记录器配置 关键是 当我需要将捆绑包放入项目中时 我不想在 app config yml 中进行
  • jquery: this.not (':animated') && that.is (':visible') 不遵循规则,语法问题?只需几行代码

    当我点击 button 它还在做 do something 虽然 wrapper正在动画并且 wrapper span不可见 所以它不遵守规则 怎么了 button click function if wrapper not animate
  • 尝试从 TimerCallback 访问 Web 浏览器控件时 C#“InvalidCastException”

    基本上我和这位用户有同样的问题 如何通过鼠标按住和释放来检查 TrackBar 滑动我使用提供的第一个解决方案解决了这个问题 但是 当调用计时器时 我想在 Web 浏览器控件上调用 InvokeScript InvokeScript 运行时
  • JavaFX Canvas:绘制虚线

    我正在使用 JavaFX图形上下文对于立即模式绘图Canvas 可以画虚线吗 Thanks 有一个方法设置线短划线对于虚线 一切都像以前一样 gc setStroke Color RED gc setLineWidth 1 gc setLi
  • C++ 重载流运算符、引用参数和匿名实例

    如果我有一个带有重载流运算符的 POD struct Value friend ostream operator lt lt ostream out Value val 我无法将流运算符与匿名实例一起使用 例如我不能这样做 cout lt
  • 无需 join 语句即可从一张表更新另一张表

    我想根据另一个表的值更新表中的列 我使用稍旧版本的 Firebird 2 1 因此它在更新执行期间不支持 join 语句 为了消除这种情况 根据原始 Firebird 常见问题解答中给出的说明http www firebirdfaq org
  • JSF 2.0.3 中的英文错误消息(未验证)?

    我已成功配置 JSF 1 2 以显示来自服务器的英文错误消息 现在我正在过渡到 JSF 2 0 但错误消息似乎又回到了德语 如果你想用谷歌搜索任何东西 本地化错误消息真的很痛苦 顺便说一句 我不知道是谁决定本地化错误消息是一件好事 这是面孔
  • TableView 中的 JavaFX 属性

    我正在自学如何在 TableView 中使用 JavaFX 属性 但在处理某些属性类型时遇到了问题 我有一个包含两个属性的对象 Person public class Person private final StringProperty
  • Laravel 路由文件中的 If 条件

    有没有办法在 Laravel 5 的 paths php 文件中添加 if 语句 我已经尝试过这个但不起作用 Route get function if Auth user Route get PagesController logged
  • 如何等待函数或数据库查询?然后处理结果最后发回

    我有这样的场景 app get async function request response await foo DbConnection then result gt console log response ready let foo
  • 在 Apache Thrift C# 中将流作为属性发送

    我想在 Thrift 服务中使用流 例如 在服务方法中使用流或类似的东西作为方法的参数 例如 能够将 IDataReader 的结果序列化为流 然后反序列化对另一服务器端数据的引用 我认为这显然不可能 但我想知道是否有另一种方法可以实现类似
  • 函数内公式错误

    我想用survfit and basehaz 在函数内部 但它们不起作用 你能看一下这个问题吗 感谢您的帮助 以下代码会导致错误 library survival n lt 50 total sample size nclust lt 5
  • 从套接字读取缓冲区

    我正在用 c 编写简单的服务器 客户端 其中服务器临时存储来自客户端的消息并在客户端请求时检索它 问题是当客户端从服务器接收消息时 缓冲区的行为有点奇怪 我所做的只是读取从服务器接收的数据并将其打印在屏幕上 但不知何故缓冲区被覆盖的程度超过