Erlang的socket 编程简例

Erlang 中gen_tcp 用于编写TCP程序,gen_udp用于编写UDP程序。一个简单的TCP服务器echo示例:

Start_echo_server()->

{ok,Listen}= gen_tcp:listen(1234,[binary,{packet,4},{reuseaddr,true},{active,true}]),

{ok,socket}=get_tcp:accept(Listen),

gen_tcp:close(Listen),

loop(Socket).

loop(Socket) ->

receive

{tcp,Socket,Bin} ->

io:format(“serverreceived binary = ~p~n”,[Bin])

Str= binary_to_term(Bin),

io:format(“server  (unpacked) ~p~n”,[Str]),

Reply= lib_misc:string2value(Str),

io:format(“serverreplying = ~p~n”,[Reply]),

gen_tcp:send(Socket,term_to_binary(Reply)),

loop(Socket);

{tcp_closed,Socket} ->

Io:format(“ServerSocket closed ~n”)

end.

Tcp 的echo客户端示例:

echo_client_eval(Str) ->

{Ok,Socket} = gen_tcp:connect(“localhost”,2345,[binary,{packet,4}]),

ok= gen_tcp:send(Socket, term_to_binary(Str)),

receive

{tcp,Socket,Bin}->

Io:format(“Clientreceived binary  = ~p~n”,[Bin]),

Val=binary_to_term(Bin),

io:format(“Clientresult = ~p~n”,[Val]),

gen_tcp:close(Socket)

end.

UDP server示例

udp_demo_server(Port) ->

{ok,Socket}= gen_udp:open(Open,[Binary]),

loop(Socket).

Loop(Socket)->

receive

{udp,Socket,Host,Port,Bin}->

BinReply= …,

gen_udp:send(Socket,Host,Port,BinReply),

loop(Socket)

End.

UDP client 示例:

udp_demo_client(Request) ->

{ok,Socket}= gen_udp:open(0,[Binary]),

ok= gen_udp:send(Socket,”localhost”,1234,Request),

Value=    receive

{udp,Socket,_,_,Bin}-> {ok,Bin}

after2000 -> error

end,

gen_udp:close(Socket),

Value

注意,因为UDP是不可靠的,一定要设一个超时时间,而且Reqeust最好小于500字节。

WebSocket, JS 和Erlang相结合,能够实现Web的绝大多数功能。

时间: 2024-08-09 14:48:29

Erlang的socket 编程简例的相关文章

linux下C语言socket网络编程简例

转自:http://blog.csdn.net/kikilizhm/article/details/7858405 这里给出在linux下的简单socket网络编程的实例,使用tcp协议进行通信,服务端进行监听,在收到客户端的连接后,发送数据给客户端:客户端在接受到数据后打印出来,然后关闭.程序里有详细的说明,其中对具体的结构体和函数的实现可以参考其他资料. 程序说明: 这里服务器的端口号和ip地址使用固定的设置,移植时可以根据具体情况更改,可以改写为参数传递更好,这里为了方便,使用固定的. 移

python-socket编程简例

服务端: #!/usr/bin/python3 # 文件名:server.py # 导入 socket.sys 模块 import socket import sys # 创建 socket 对象 serversocket = socket.socket( socket.AF_INET, socket.SOCK_STREAM) # 获取本地主机名 host = socket.gethostname() port = 9999 # 绑定端口号 serversocket.bind((host, po

Python Socket 编程——聊天室演示样例程序

上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和client的代码了解主要的 Python Socket 编程模型.本文再通过一个样例来加强一下对 Socket 编程的理解. 聊天室程序需求 我们要实现的是简单的聊天室的样例,就是同意多个人同一时候一起聊天.每一个人发送的消息全部人都能接收到,类似于 QQ 群的功能,而不是点对点的 QQ 好友之间的聊天.例如以下图: 图来自:http://www.ibm.com/developerworks/linux/tu

require.js【模块化编程】- 模块加载简例

今天去学习了一下javascript的模块化编程,写了个简单的例子. ———————————————— 这是我的第一篇技术性的小博文,希望和大家相互交流  ———————————————— 这个列子我打算分两个部分罗列: 1.文件地图 2.源代码 demo.html: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtm

socket编程——一个简单的样例

从一个简单的使用TCP样例開始socket编程,其基本过程例如以下: server                                                  client +++++++                                          ++++++++ 创建socket                                          创建socket +++++++                            

erlang的Socket参数含义

http://blog.csdn.net/pkutao/article/details/8572216 {ok, Listen} = gen_tcp:listen(?defPort, [binary, {packet, 2},{reuseaddr, true},{active, true}]),%gen_tcp表用TCP连接%binary表二进制流方式%packet,2:表包头长度2字节%reuseaddr, true:表多个实例可重用同一端口% {active,true} 创建一个主动套字节(

Linux Socket编程-(转自吴秦(Tyler))

"一切皆Socket!" 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket. --有感于实际编程和开源项目研究. 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的.本文的主要内容如下: 1.网络中进程之间如何通信?

使用libevent进行多线程socket编程demo

最近要对一个用libevent写的C/C++项目进行修改,要改成多线程的,故做了一些学习和研究. libevent是一个用C语言写的开源的一个库.它对socket编程里的epoll/select等功能进行了封装,并且使用了一些设计模式(比如反应堆模式),用事件机制来简化了socket编程.libevent的好处网上有很多,但是初学者往往都看不懂.我打个比方吧,1)假设有N个客户端同时往服务端通过socket写数据,用了libevent之后,你的server程序里就不用再使用epoll或是sele

Windows Socket编程示例-TCP示例程序

前面一部分是介绍,后面有示例 1.网络中进程之间如何通信? 首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的.其实TCP/IP协议族已经帮我们解决了这个问题,网络层的"ip地址"可以唯一标识网络中的主机,而传输层的"协议+端口"可以唯一标识主机中的应用程序(进程).这样利用三元组(ip地址,协议,端口)就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互. 使用TCP