【发布时间】:2011-05-08 12:32:27
【问题描述】:
我正在使用 Erlang 编写一个 bittorrent 客户端。我在同一个问题上被困了 4 天。
我正在向所有对等点发送握手,每个对等点都有自己的 ip:port。
我使用 gen_tcp:connect 进行连接。
问题是我无法得到他们的回复。我做了很多研究并使用了一些程序来监控我的入站/出站连接。
对等方获取数据并将回复发送回我用来向他们发送握手的端口。
代码方面:get_tcp:connect 选择一个端口并使用该端口将数据发送到对等方。对等方在该端口上回复。但是,正如您在 Erlang 中所知道的,您需要使用 gen_tcp:listen 来获取回复连接,并且您需要指定一个端口。在我的情况下,我应该监听的端口是 gen_tcp:connect 返回的端口。
我可以使用 inet:port 获取此端口号,但错误始终相同:正在使用的端口。 我明白为什么会出现错误,这仅仅是因为我尝试监听的端口已被 gen_tcp:connect 使用。我试图关闭 Socket 以释放端口,但什么也没有。
所以我的问题是:在 Erlang 中是否有可能以某种方式连接到对等点并将数据发送到端口,然后在同一个端口上侦听以获取回复。如果不是,那么我必须能够以某种方式告诉对等方将数据发送回我选择的端口。
欢迎来自所有 Erlang 大师的任何想法。 谢谢,
//弗兰克。
【问题讨论】:
-
顺便说一句,为什么最近大家都想写bittorrent peers fpr erlang???
-
这是大学的任务,Peer!
标签: tcp erlang bittorrent