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

binary.Write 到 go 块中的套接字

binary.Write 到 go 块中的套接字

Go
慕桂英3389331 2021-11-01 17:38:26
我正在尝试编写一个简单的客户端 - 服务器应用程序。它在同一台计算机上的双方都可以正常工作,但在两台不同的计算机上运行时它会阻塞。这些计算机是 RaspBerry Pi 2 和 MacBook Pro。问题是客户端在运行了几次后会阻塞在 binary.Write 中。通常,接收数据的服务器打印它已收到 63 和发送数据的客户端打印它将发送 64。如果我将截止日期广告给服务器,它会因超时而退出。客户端也有截止日期,但不会超时。我尝试用一个简单的字节数组或一个 int 替换数据。它仍然阻塞。但是数据越小,正确的次数就越多。如果我删除客户端中的 Printf 函数,它也会运行更长的时间。我还尝试通过从套接字到 STDIO 的简单副本来替换服务器的功能(我在某处找到的一个提示),但它仍然无法从 binary.Write 中出来。任何的想法?这是完整的来源。那里有一些虚假的东西(例如计数循环),但它们都非常简单。还是我错了?
查看完整描述

1 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

吉姆的回答是正确的。Main 进入繁忙循环。我通过将一个通道传递给侦听器并在 main 结束时等待它来解决它。客户端在 for 循环之后“写入”它,这是一个无限循环,所以 main 永远不会结束。从那时起,该程序一直在传递数据。我会让它在一夜之间运行以确定。

我只有大约 12.5Mbit/s,这有点好笑。连接是 1Gbit Wifi AC 到 100mbit 以太网交换机到 Raspberry Pi。但这是另一个问题。


查看完整回答
反对 回复 2021-11-01
  • 1 回答
  • 0 关注
  • 277 浏览
慕课专栏
更多

添加回答

举报

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