问题标签 [gen-tcp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
718 浏览

erlang - Erlang 缺少消息

我正在运行以下代码dbg:p(client, r)

它与我用 gen_tcp 和 gen_server 编写的服务器通信,遵循this。我的主要问题是我不能可靠地收到我的所有消息。有时我会得到

从调试输出,但没有相应的Received TCP message on #Port<0.517>:...消息。我还会看到这样的事情:

但没有net_client收到任何东西。我用wireshark观察了网络流量,我知道数据包正在到达它们应该去的地方并被ACK编辑。我究竟做错了什么?

编辑:我正在调用erl -smp enable -eval "client:start()."它以防万一。

0 投票
1 回答
953 浏览

erlang - gen_tcp smushed 消息

我正在使用本教程中的socket_server以及客户端和服务器的以下代码:

服务器:

客户:

我按顺序从同一系统上的不同 shell调用echo_server:start()和调用。echo_client:start()这是我看到的:

服务器似乎工作得很好。

客户端并没有完全正确地获取所有消息:

如果我查看 上的网络流量lo,我会看到每个倒计时的数字都非常干净的 PSH/ACK 对。我在上面指出的行显示了两个数据包出现在一条消息中:7 和 6。它们作为两个单独的 TCP 数据包通过网络传入。任何人都知道为什么他们会被混在一起或如何解开他们?

0 投票
1 回答
1007 浏览

erlang - Erlang:在关闭的连接上发送

如果客户端通过正常的 tcp 连接连接到服务器,然后客户端的连接中断,服务器将获得(假设活动模式){tcp_closed,Socket}。但是在某些情况下,服务器不会知道客户端已断开连接,例如电源故障或崩溃等(我相信,我可能是错的)。在这些情况下,客户端已消失,但服务器仍认为它已连接。如果服务器在这些情况下尝试向客户端发送消息,它会假设客户端收到消息还是 tcp 堆栈会在低级别对其进行排序,然后服务器会返回某种错误?

我知道这是一个简单的问题,但我自己测试它时遇到了麻烦,因为我无法让客户像我需要的那样发生灾难性的失败(即使 kill -9 也没有这样做)。有人对这个有经验么?

0 投票
2 回答
4053 浏览

ssl - 寻找一个简单的 ssl erlang 示例

Erlang Programming一书中,建议的练习之一是在屏幕上打印来自浏览器的请求,使用gen_tcp. 我为http请求做了如下:

现在我想知道在 https 请求的情况下如何做到这一点。你能提供一个非常简单的例子,或者给我指点书籍或网上的一些资源吗?

0 投票
2 回答
2084 浏览

erlang - gen_server 关闭监听套接字

我想要做的是让一个 gen_server 进程接受一个新客户端并立即产生一个新的孩子来处理下一个。我看到的问题是,当套接字完成并随之终止时,它也会关闭侦听套接字,我不知道为什么,即使它不再引用它。

知道我做错了什么吗?

gen_server:

导师:

0 投票
3 回答
1448 浏览

java - 使用 gen_tcp:send 的消息在套接字关闭之前不会被发送

我想编写一个简单的客户端,将消息发送到服务器并接收响应。我有一个服务器,它向所有连接的客户端广播相同的消息,并且在我使用 telnet 测试它时它正在工作。当我尝试使用 Erlang shell 执行此操作时, gen_tcp:send 在我关闭套接字之前不会发送任何消息。

这就是我想要做的:

通过查看我的 telnet 客户端,我可以看到当我关闭套接字时发送了消息。

Erlang 版本:R14B01 (erts-5.8.2)

更新

hdima 评论说服务器从流中提取消息的方式可能是错误的。这似乎是因为当我尝试编写自己的服务器时,客户端似乎按预期工作。我将尝试获取服务器的源代码。顺便说一句,服务器是用 Java 编写的。

0 投票
1 回答
940 浏览

erlang - Erlang gen_tcp:listen/2 for IPv6

我有 .NET TCP Sender 发送到 Erlang 接收器。::1.NET 组件在解析 .NET 时喜欢使用 IPv6 地址localhost。我不太确定如何让 Erlang 使用 gen_tcp 监听 IPv6 地址。这是我的尝试。我是在告诉错误的套接字进行监听吗?谢谢!

0 投票
0 回答
122 浏览

binary - Erlang gen_tcp:发送二进制文件被合并?

可能重复:
gen_tcp smushed 消息

有时,当我发送二进制数据时,gen_tcp:send它会合并到收件箱中,例如<<0,1>><<1,0>>并将作为<<0,1,1,0>>. 我怎样才能解决这个问题?感谢您的回复。

0 投票
2 回答
1062 浏览

erlang - 什么是erlang emsgsize?

我们学校的项目是一个 BitTorrent 客户端。今天我突然{tcp_error,#Port<0.2095>,emsgsize}出错了,我的问题是什么导致了这个错误?我有option {packet,4}gen_tcp所以我的猜测是包的长度与前 4 个字节不匹配?这真的很奇怪,因为除了握手之外的所有 BitTorrent 消息都有前 4 个字节 len。昨天我们能够下载,现在我收到了这些消息。请注意,有些消息可以正常到达。感谢您对这个问题的想法。

0 投票
3 回答
700 浏览

erlang - erlang gen_tcp 发送问题

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

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

只有当我快速发送数据时它才会重现,如果我慢慢发送数据似乎没问题。有谁知道为什么会这样?这将非常有帮助。