为了账号安全,请及时绑定邮箱和手机立即绑定

Golang tcp socket read最终给出EOF

Golang tcp socket read最终给出EOF

Go
慕姐4208626 2021-08-16 18:52:41
我在从套接字读取时遇到问题。有星号实例运行大量呼叫(一分钟 10-60 次),我正在尝试读取和处理与这些呼叫(连接到 AMI)相关的 CDR 事件。这是我正在使用的库(不是我的,但由于错误而被推到 fork)https://github.com/warik/gami它非常简单,主要操作在 gami.go - readDispatcher 中。buf := make([]byte, _READ_BUF)    // read buffer    for {        rc, err := (*a.conn).Read(buf)所以,有 TCPConn (a.conn) 和大小为 1024 的缓冲区,我正在从套接字读取消息。到目前为止一切顺利,但最终,有时(此时间可能会从 10 分钟到 5 小时不等,与通过套接字传入的数据量无关)读取操作失败并出现 io.EOF 错误。我试图立即重新连接并重新登录,但这也是不可能的 - 连接超时,所以我被迫等待大约 40-60 秒,这次对我来说非常重要,我因为延迟丢失了很多数据. 我在谷歌上搜索、阅读资料并尝试了很多东西——什么都没有。最奇怪的是,在python或php中打开的那个简单的socket并没有失败。由于缺少文件描述符来表示我的机器或星号服务器上的套接字,是否可能出现问题?星号配置中是否有可能出现这个问题(因为我有另一个星号,这个问题不会重现,而且,我对最后一个的调用时间减少了)?在我处理套接字连接或一般情况下,是否有可能出现这个问题?转到版本 go1.2.1 linux/amd64
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 997 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信