TCP例子---Erlang

  • hello.erl
-module(hello).
-export([main/0, 
        server/0,
        client/0
        ]).

main()->
    io:format("module ~p~n", [?MODULE]),
    spawn(hello, server,[]),
    spawn(hello, client,[]),
    ok.

server() ->
    {ok, LSock} = gen_tcp:listen(5678, [binary, {packet, 0},
    {active, false}]),
    {ok, Sock} = gen_tcp:accept(LSock),
    io:format("before recv~n"),
    {ok, Bin} = do_recv(Sock, []),
    io:format("after recv~n"),
    ok = gen_tcp:close(Sock),
    io:format("data ~p~n" , [Bin]),
    Bin.
do_recv(Sock, Bs) ->
    case gen_tcp:recv(Sock, 0) of
        {ok, B} ->
            do_recv(Sock, [Bs, B]);
        {error, closed} ->
            {ok, list_to_binary(Bs)}
    end.

client() ->
    SomeHostInNet = "localhost", % to make it runnable on one machine
    {ok, Sock} = gen_tcp:connect(SomeHostInNet, 5678,
        [binary, {packet, 0}]),
    ok = gen_tcp:send(Sock, "Some Data"),
    ok = gen_tcp:close(Sock).
  • 测试
erl
Erlang R14B04 (erts-5.8.5) [source] [smp:2:2] [rq:2] [async-threads:0] [kernel-poll:false]

Eshell V5.8.5  (abort with ^G)
1> c(hello).
{ok,hello}
2> hello:main().
module hello
ok
before recv
after recv
data <<"Some Data">>
3>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值