[erlang-questions] Low Level Socket Example
Serge Aleynikov
saleyn@REDACTED
Tue Aug 12 22:46:00 CEST 2008
If you are interested in learning the details of network protocols,
Erlang could be your friend for the task as a rapid prototyping
framework. You have to be aware though that a TCP stack in Erlang will
not deliver the same performance as the kernel-level stack
implementation. However it is doable as a proof of concept.
The network driver that comes with Erlang is not suited for this task,
as it serves as a bridge between TCP/SCTP/UDP protocols and the
emulator. So if you really have interest in accessing raw sockets,
you'd need to write a driver in C/C++ to marshal raw packets between
user-level POSIX API and an Erlang process.
Serge
Marc Eisenbarth wrote:
>> Why can't you use gen_tcp? Do you really need to implement OS level APIs
>> in
>> Erlang? Erlang really isn't the right language for raw socket
>> manipulation.
>> Try out C.
>
> gen_tcp will do the entire TCP session setup for me, so it's not appropriate for my task. Just because C might be better for this task, doesn't mean it's better for the rest of my program. In fact, there's are at least 2 examples of projects that implement network stacks in Erlang, so at least a few people out there that would disagree with you and instead agree that there is some merit in using Erlang :)
More information about the erlang-questions
mailing list