欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Erlang和Ruby的Socket通讯

发布时间:2025/7/14 编程问答 65 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Erlang和Ruby的Socket通讯 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
server.erl 
Java代码 
  • -module(server).  
  • -export([start/0,start/1,process/1]).  
  • -define(defPort, 8888).  
  •   
  • start() -> start(?defPort).  
  •   
  • start(Port) ->  
  •   case gen_tcp:listen(Port, [binary, {packet, 0}, {active, false}]) of  
  •     {ok, LSock} -> server_loop(LSock);  
  •     {error, Reason} -> exit({Port,Reason})  
  •   end.  
  •   
  • %% main server loop - wait for next connection, spawn child to process it  
  • server_loop(LSock) ->  
  •   case gen_tcp:accept(LSock) of  
  •     {ok, Sock} ->  
  •       spawn(?MODULE,process,[Sock]),  
  •       server_loop(LSock);  
  •     {error, Reason} ->  
  •       exit({accept,Reason})  
  •   end.  
  •   
  • %% process current connection  
  • process(Sock) ->  
  •   Req = do_recv(Sock),  
  •   Resp = "Hello, " ++ Req ++ "!",  
  •   do_send(Sock,Resp),  
  •   gen_tcp:close(Sock).  
  •   
  • %% send a line of text to the socket  
  • do_send(Sock,Msg) ->  
  •   case gen_tcp:send(Sock, Msg) of  
  •     ok -> ok;  
  •     {error, Reason} -> exit(Reason)  
  •   end.  
  •   
  • %% receive data from the socket  
  • do_recv(Sock) ->  
  •   case gen_tcp:recv(Sock, 0) of  
  •     {ok, Bin} -> binary_to_list(Bin);  
  •     {error, closed} -> exit(closed);  
  •     {error, Reason} -> exit(Reason)  
  •   end.  


  • client.rb 
    Java代码 
  • require 'socket'  
  •   
  • client = TCPSocket.open('localhost'8888)  
  • client.send("hideto"0)  
  • puts client.readlines  
  • client.close  


  • Erlang服务器编译运行: 
    Java代码 
  • Eshell > c(server.erl).  
  • Eshell > server:start().  


  • Ruby客户端解释运行: 
    Java代码 
  • > ruby client.rb  
  • Hello, hideto!  
  • 转载于:https://www.cnblogs.com/orez88/articles/1800787.html

    总结

    以上是生活随笔为你收集整理的Erlang和Ruby的Socket通讯的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。