Golang写入套接字而不用担心数据不完整

2024-01-10

我们都知道,Write 方法不能保证从缓冲区中写入高字节。因此,使用原始 Write 方法将字节写入套接字的规范方法如下所示

//how many bytes we have written
written := 0 

for written < len(msg){
    //write the bytes from buffer that havent been witten yet
    wr, err := conn.Write(msg[written:])

    if err != nil{
        return;
    }

    written += wr
}

现在假设我不想使用如此低级的技术,并且想使用一个可以为我完成此操作的函数。我应该使用标准库中的哪个函数?


将字节写入套接字的规范方法是:

_, err := conn.Write(msg)
if err != nil{
    // handle error
}

循环是不必要的,因为当 Write 在写入所有切片数据之前停止时,Write 将返回非零错误。

在这方面,写入与读取不同。读取无需填充切片即可成功。

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

Golang写入套接字而不用担心数据不完整 的相关文章

  • golang.org 包和标准库之间的区别

    我使用 go 已经有一段时间了 我注意到 Go 标准库 和 golang org x 之间存在重复的包 我的问题是 为什么它们被释放两次 在这两者中 我应该使用哪一个 更新的 规范的等 到目前为止我注意到的一些示例包已发布两次 golang
  • 使用 mgo 驱动程序进行 mongo 聚合查询

    我在 mongodb 中有以下查询 db devices aggregate match userId v73TuQqZykbxFXsWo state true project userId 1 categorySlug 1 weight
  • 替换文件中的字符串

    我正在寻找一种方法来替换文件中的字符串而不将整个文件读入内存 通常我会使用 Reader 和 Writer 即如下所示 public static void replace String oldstring String newstring
  • GoLang 中的 HTML 部分

    我刚刚开始使用 Go 我想用它创建一个网络应用程序 我现在尝试的是以handlebarsjs 式的方式使用模板 我想将页眉和页脚从主页中取出 以便可以将它们注入到每个网页上 我当前的设置应该是解析主页 页眉和页脚 HTML 文件并缓存它们
  • 有没有办法间歇性地执行重复性任务?

    有没有办法在 Go 中执行重复的后台任务 我在想类似的事情Timer schedule task delay period 在爪哇 我知道我可以用 goroutine 来做到这一点Time sleep 但我想要一些容易停止的东西 这是我得到
  • 关闭长度未知的通道

    当不了解频道时我无法关闭频道 length package main import fmt time func gen ch chan int var i int for time Sleep time Millisecond 10 ch
  • Java 套接字:可以从一个线程发送并在另一个线程上接收吗?

    这可能是一个非常基本的问题 但我很难找到答案 让一个线程写入 Socket 的输出流 而另一个线程从 Socket 的输入流读取数据 这样可以吗 编辑 这是一个与外部服务器通信的客户端应用程序 我并不是想让两个线程互相交谈 很抱歉含糊不清
  • container_memory_working_set_bytes 与 process_resident_memory_bytes 和total_rss 之间的关系

    我希望了解以下关系 容器内存工作集字节 vs 进程驻留内存字节 vs 总计RSS 容器内存 rss 文件映射以便更好地配备OOM可能性警报系统 这似乎违背了我的理解 这让我现在感到困惑 如果容器 pod 运行单个进程 执行用 Go 编写的编
  • Java RMI 在租约到期后不关闭套接字

    我启用 RMI 的应用程序似乎正在泄漏套接字 我有一个通过 RMI 提供服务的 Java 应用程序 它使用在 Linux 上运行的 Java SE 1 6 RMI 实现 我观察到的问题是 如果客户端使用注册表获取对我的远程对象的引用 然后连
  • 运行最新版本时没有“最新”消息?

    我正在尝试使用Sparkle https sparkle project org与 Qt Go 的绑定 https github com therecipe qt app 闪光 m import
  • Android 套接字和 HTTP 响应标头

    有趣的是 我可能无意中找到了解决方案是否可以使用普通套接字连接发送 HTTP 请求并接收没有标头的响应 https stackoverflow com questions 8320574 我希望我忽略了一些东西 无论如何 我正在连接到 We
  • 如何将长 Go 模板函数拆分为多行?

    我有一个很长的printf调用 Go 模板 例子 printf mongodb s s s s authSource admin replicaSet s readPreference nearest w majority Values r
  • 从 Golang 调用 C 函数

    我想在 Golang 中编写控制器逻辑并处理 json 和数据库 同时在 C 中使用我的数学处理模型 在我看来 调用 C 函数的开销必须尽可能低 就像设置寄存器 rcx rdx rsi rdi 一样 执行一些操作fastcall 并获取 r
  • 消息队列与套接字

    我没有太多的套接字编程经验 但我尝试阅读一些相关内容 我对 MDB 和消息队列非常熟悉 有人告诉我队列 例如 MDB 只不过是直接套接字连接 有人可以帮我比较一下这两个吗 两者是无与伦比的 因为它们代表不同的layers 这就像将关系数据库
  • 在 Android 上生成 FileDescriptor 而不先打开文件

    在Android中 是否可以直接从字节数组生成FileDescriptor 而不必先打开文件 在 Android 2 2 中 我动态生成 MIDI 文件 然后使用 MediaPlayer 进行播放 我在下面包含了成功执行此操作的 Main
  • 如何在 Go 中获取给定月份的第一个星期一?

    我正在尝试获取给定月份的第一个星期一 我能想到的最好方法是循环前 7 天 然后返回 Weekday Monday 有一个更好的方法吗 通过查看时间的 Weekday 您可以计算出第一个星期一 package main import fmt
  • 如何构建一个不链接到 musl libc 的 go 可执行文件

    So 官方的 Go 构建容器基于 Alpine 高山用途musl https www musl libc org 作为 libc 而不是 glibc 我需要在容器中构建一个可以在使用 glibc 的 Ubuntu 上运行的 Go 可执行文件
  • 在 Haskell 中调试时打印时间戳

    我仍在学习 Haskell 并调试一些函数 并且通常有一个时间戳函数来了解某些操作何时开始和停止 doSomeAction String gt IO doSomeAction arg1 do putStrLn lt lt makeTime
  • TCP打孔问题

    我尝试使用 Python 3 中概述的原则为防火墙编写一个基本的 TCP 打孔器本文 http www bford info pub net p2pnat index html 不过 我无法连接任何东西 这是代码 usr bin pytho
  • 结构体到磁盘的高效 Go 序列化

    我的任务是将 C 代码替换为 Go 而且我对 Go API 还很陌生 我正在使用 gob 将数百个键 值条目编码到磁盘页面 但 gob 编码有太多不需要的膨胀 package main import bytes encoding gob f

随机推荐

  • Java 8 - 从 Collection.stream.map() 调用多参数方法

    我使用 java 8 Streams 一段时间了 我遇到了一种情况 我需要流式传输列表并将每个元素与另一个参数一起传递给静态方法 在java 8中可以吗 String designation Engineer List
  • 反连接和反半连接有什么区别?

    From http www dbspecialists com files presentations semijoins html http www dbspecialists com files presentations semijo
  • Pandas 日期范围返回 yyyy-ww 的“无法将字符串转换为时间戳”

    我有一个包含两列的数据框 Sales and Date dataset head 10 Date Sales 0 2015 01 02 34988 0 1 2015 01 03 32809 0 2 2015 01 05 9802 0 3 2
  • UIApplication.statusBarStyle 在 vi​​ewWillAppear 和 viewDidAppear 之间变化

    在 iOS7 中运行最初为以前版本设计的应用程序时 深灰色的导航栏会将文本为黑色的状态栏着色 我正在尝试使其适应最新版本 并将 UIApplication statusBarStyle 设置为 UIStatusBarStyleLightCo
  • 如何实现停止/取消按钮?

    我有一个方法 processData 它需要大量数据并对其进行一些处理 有一个启动按钮可以启动处理 我需要一个取消按钮来停止处理 无论它在哪里 我怎样才能实现这样的事情 我不明白的是如何在处理开始后使取消按钮可用 因为当函数运行时 UI 的
  • Mac OS X + Python + Django + MySQL

    我花了几天的时间试图让 MySQL 与 Mac OS X Python 我已经尝试过 2 7 和 3 3 和 Django 1 6 一起工作 这个主题在 SO 和其他地方的许多网页上都有讨论 并且持续了很多年 一个解决方案专门使用 MySQ
  • 如何修复 vim 以正确缩进包含 Python 注释行的折叠?

    我将 vim 的折叠方法设置为缩进 这在编写 Python 时效果很好 除非我有注释行 例如 如果我有这段代码 def myFunction here is my comment myString hello myInt 2 如果我将光标放
  • 为什么从iis调用XMLRPC时fiddler没有捕获请求?

    我有一个用 NET 编写的 Web 应用程序 它利用 CookComputing XmlRpcV2 进行 xmlrpc 通信 当我在 Visual Studio 2008 中调用单元测试时 fiddler2 成功捕获实际的 xmlrpc 请
  • 从 SFX 运行时批处理文件的行为有所不同

    因此 我编写了一个批处理文件来将客户端转换为云服务 并且我从中看到了一些奇怪的行为 因此 这基本上会查找特定的文件夹 无论它是否存在 它都会使用 GOTO 继续前进 当我使用 WinRAR 将其压缩为 SFX 并指示它运行批处理文件时 它永
  • 从应用程序范围的用户 ID 获取 Facebook 用户 ID

    从 Facebook Graph API v1 0 升级到 v2 0 后 Facebook 使用 应用程序范围的用户 ID 因此我无法再在应用程序中看到 原始 用户 ID 我总是使用实时更新和图形 API 调用 例如 https graph
  • 无论我尝试什么,CFBundleDisplayName 的本地化都不起作用

    有人可以告诉我如何找到问题吗 我有一个名为 MyApp 的应用程序 我想将应用程序名称本地化为德语 我在主项目目录中有一个目录 de lproj 它包含一个文件 Localized strings 并且工作正常 我添加了一个 InfoPli
  • 如何在图像上方添加渐变边框(对角线边框)[重复]

    这个问题在这里已经有答案了 我需要这样的东西 但在图像上方 这是我的第一次尝试 但它不起作用 http jsfiddle net wo8gbhx3 17 http jsfiddle net wo8gbhx3 17 这是我的标记 现在 HTM
  • Rails 3 使用 Ajax 计算行总数

    我有一个发票应用程序 发票有行项目 提交发票后 即可正确计算行总计和总计 但我还想在提交发票之前计算行总计和总计 例如 如果您更改数量 则行总计和总计应更改 我目前正在研究不同的 jQuery 插件 也许你过去也做过类似的事情 你会推荐什么
  • 如何防止角材料垫菜单关闭?

    我正在角度材料中创建一个日期时间选择器控件 并使用以下代码来执行此操作
  • 如何自定义FBLoginVIew?

    为了在我的 ios 应用程序中连接到 facebook 我正在使用 FBLoginVIew适用于 iOS 的 Facebook SDK http developers facebook com docs sdk reference ioss
  • 在ggplot2facet_grid中旋转切换的facet标签

    我想使用facet grid 在彼此之上绘制一些条形图 library ggplot2 df lt group by mpg manufacturer gt summarise cty mean cty hwy mean hwy gt un
  • 我希望 shell 脚本可执行但不可读

    我创建了一个脚本 我希望其他用户使用我们的共享系统 to 执行但不读取 我将权限设置为所有可执行文件 但撤销了读 写权限 x x x 1 dilletante staff 0 2013 04 02 11 42 expect sh 然而脚本无
  • 使用 lambda 表达式参数调用泛型方法的反射

    我正在寻找一种使用 lambda 表达式调用通用方法的方法 该表达式在项目数组中调用 Contains 在本例中 我使用实体框架Where方法 但该场景可以应用于其他IEnumerables 我需要通过 Reflection 调用上面代码的
  • 如何检查 SQL Server 当前池大小

    有没有办法检查 SQL Server 中当前连接池的大小 我不是在谈论最大连接池大小 而是当前池大小 假设最大池大小为 100 并且有 49 个打开的连接 它现在应该显示 51 个可用连接或 49 个已消耗连接 那么 有这样的查询吗 其中很
  • Golang写入套接字而不用担心数据不完整

    我们都知道 Write 方法不能保证从缓冲区中写入高字节 因此 使用原始 Write 方法将字节写入套接字的规范方法如下所示 how many bytes we have written written 0 for written lt l