首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >erlang gen_tcp发送问题

erlang gen_tcp发送问题
EN

Stack Overflow用户
提问于 2012-03-17 20:39:42
回答 3查看 688关注 0票数 1

你能帮帮我吗?我有一个与gen_tcp发送函数相关的问题。我一直在尝试从我的erlang服务器向flash客户端发送几个元组,大约10-15个项目,它们被解码为amf对象。

代码语言:javascript
复制
case get_tcp:send(Socket, Msg) of
ok -> io:format("sent~n");
{erorr, Err} -> io:format("~w~n", [Err])
end

没有错误,但flash客户端没有接收到大约8-11个项目的全部数据。套接字选项为binary、{active,true}、{reuseaddr,true}。我已经检查了我使用客户端的网络-发送的数据包被分成两个片段,大的和小的。大的是数据包的第一个片段,小的是下一个。较大的数量与发送的消息数量相同,但较小的数量要少得多,并且与flash客户端接收的消息数量大致相同。

只有当我快速发送数据时,它才会重现,如果我缓慢地发送数据,它看起来还可以。有人知道为什么会这样吗?这将是非常有用的。

EN

回答 3

Stack Overflow用户

发布于 2012-03-19 22:56:30

我的猜测是,这是一个框架问题。

TCP是一种流协议,因此当您在闪存中读取时,不能保证立即获得所有消息。相反,你需要某种框架设置,比如插座选项上的{packet, 2}{packet, 4}。这有效地将TCP从流协议转变为消息传递协议。我认为你想要后者。

票数 1
EN

Stack Overflow用户

发布于 2012-03-21 11:50:00

我认为你可以这样做:1在发送msg (你的元组)之前,使用term_to_binary(Msg)获取二进制文件,然后使用binary_to_term获取二进制文件的大小,然后,在你的客户端收到msg之后,使用msg获取元组。2您需要设置套接字选项的客户端和服务器{packet,2或4}

票数 1
EN

Stack Overflow用户

发布于 2012-03-18 00:39:54

  1. 我没有试过amf,但我用erlang+flash和json代替了amf
  2. 套接字的什么包选项?(例如,我使用{packet,2} )
  3. 您是如何读取客户端数据的?也许您没有读取所有数据以结束,并且没有引发新的事件?
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9750045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档