[Erlang 学习笔记] erlang socket 小小 demo
2012-04-29 21:25
441 查看
server端代码:
在创建socket监听的时候,有这么个配置 {active,true},这参数的意思是自动接收信息,配合gen_tcp:accept使用。但这种非阻塞接收方式会出现一种现象:信息如洪水涌来,给server造成一定压力,处理不及还会丢包。所以还有另一种接收方式,主动请求接收信息(阻塞):配置{active,false|once},配合gen_tcp:accept和gen_tcp:recv还有setopt({active,once})使用,由server去控制接收信息.
client端:
-module(server). -export([start/0]). -export([stop/1]). start()-> {ok,Listen}=gen_tcp:listen(8888, %%socket监听的端口 [binary, %%socket传输格式 binary:二进制 list:字符列表 {packet,4}, %%有关对二进制包的解包 {reuseaddr,true}, %%reuse address 复用连接过的ip地址?? {active,true}]), %%{active ,true|false|once}被动或主动或一次接收信息 {ok,Socket}=gen_tcp:accept(Listen), %%接收发送至已监听端口的信息 do(Socket,Listen). %%自定义处理 do(Socket,Listen)-> receive {tcp,Socket,Message}-> %%匹配时注意关键atom:tcp和tcp_close(建立的是基于tcp的socket) A=binary_to_term(Message), %%格式的转换 gen_tcp:send(Socket,term_to_binary(A)); {tcp_closed,Socket}-> stop(Listen), io:format("close ~n",[]) end. stop(Listen)-> gen_tcp:close(Listen), io:format("server close listen ~n",[]).
在创建socket监听的时候,有这么个配置 {active,true},这参数的意思是自动接收信息,配合gen_tcp:accept使用。但这种非阻塞接收方式会出现一种现象:信息如洪水涌来,给server造成一定压力,处理不及还会丢包。所以还有另一种接收方式,主动请求接收信息(阻塞):配置{active,false|once},配合gen_tcp:accept和gen_tcp:recv还有setopt({active,once})使用,由server去控制接收信息.
client端:
-module(client). -export([sendMessage/1,sendClose/0,waitAply/1]). sendMessage(Message)-> {ok,Socket}= gen_tcp:connect("localhost",8888,[binary,{packet,4}]),%%连接 gen_tcp:send(Socket,term_to_binary(Message)),%%发送 B=term_to_binary(Message), io:format("client send ~w to server~n",[B]), sendClose()-> {ok,Socket}= gen_tcp:connect("localhost",8888,[list,{packet,4}]), gen_tcp:close(Socket),%%关闭socket的时候会向连接的端口发送close信息,server捕获处理。 io:format("client send close to server ~n",[]).
相关文章推荐
- 【Java学习笔记】58:多线程Socket通信的demo
- Socket.io官方聊天室DEMO的学习笔记
- 【学习笔记】Socket NIO demo
- 【学习笔记】socket IO demo
- Erlang 学习笔记
- 《疯狂Java讲义(第2版)》学习笔记:使用DatagramSocket发送接收数据
- Netty4 学习笔记之一:客户端与服务端通信 demo
- unix环境编程学习笔记---------套接字------socket------客户端
- 上下载结合iOS学习笔记11-UITabBarController和UInavigationController的结合demoStrut2教程-java教程
- [Erlang 学习笔记]erlang behaviour小结之gen_server
- 友善之臂Mini6410之Android开发学习笔记(4)-EEPROM Demo
- 网络socket学习笔记(1.1)
- 自己测的socket。学习笔记
- MFC socket 学习笔记
- cocos2d-x 2.X demo学习笔记 4 ----ActionsProgress 精灵慢慢展开
- socket学习笔记——实现收发文件(Windows)
- cocos2d-x 2.X demo学习笔记 6 ----ClickAndMoveTest 触摸事件和移动
- Fiori2.0学习笔记-UI5 Demo Of FixFlex & Form
- 学习笔记:DEMO-成品网页1
- Python学习笔记-5(Socket、SQLite)