DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: wugangbest
今日帖子: 26
在线用户: 18
导航: 论坛 -> 发布代码 斑竹:liumazi,ruralboy  
作者:
男 msfm (清洁工) ★☆☆☆☆ -
盒子活跃会员
2016/1/21 16:12:37
标题:
erlang 与delphi通讯 这样设置不会有粘包问题哦 浏览:2381
加入我的收藏
楼主: -module(server).
-export([start/1, server_proc/1]).

start (Port) ->
    {ok, Sock} = gen_tcp:listen(Port, [binary, {packet, 2}, {active, false}]),

    server_loop(Sock).

server_loop (LSock) ->
    {ok, Sock} = gen_tcp:accept(LSock),

    spawn(?MODULE, server_proc, [Sock]),

    server_loop(LSock).

server_proc (Sock) ->
    Request = case gen_tcp:recv(Sock, 0) of
        {ok, ReqBin} ->
          binary_to_list(ReqBin);
        {error, closed} ->
          io:format("Client closed~n"), exit(closed);
        {error, Reason} ->
          io:format("Error: ~s~n", Reason), exit(Reason)
    end,

      io:format("Received: ~p~n", [Request]),
  mysql:start_link(conn, "127.0.0.1", 3306, "root", "123", "moordb", undefined, gbk),
  [A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,A17]=re:split(Request,","),



  B1=binary_to_list(A1),
  B2=binary_to_list(A2),
%%Sql = [list_to_binary(lists:concat(["insert into test values('",B1,"','",B2,"')"]))],

Sql = lists:concat(["insert into test values('",B1,"','",B2,"')"]),
io:format("~p~n",[Sql]),

 mysql:fetch(conn,Sql),
%%TT    = mysql:get_result_reason(Err),
%%io:format("error ~ts~n",[TT]),



    Response = "Done!",
   A= Request++"\n\r",
 %% io:format("::::::~p~n",[A]),
    gen_tcp:send(Sock, io_lib:fwrite("OK:~p.~n", [A])),
  %%  gen_tcp:send(Sock, A),

    server_proc(Sock).


procedure TForm1.FormCreate(Sender: TObject);
begin
    IdTCPClient1.Port := 1111;
  IdTCPClient1.Host := '127.0.0.1';
  IdTCPClient1.Connect;
//  caption:=word.Size.ToString()    ;
end;

procedure TForm1.Button1Click(Sender: TObject);

var
 tmps:ansistring;    len:byte;  a:Byte;    sm: TStringStream;// TMemoryStream;
 ss:string;
begin
  sm:=TStringStream.Create('',TEncoding.ANSI);
          tmps := 'dhy13704416,马东海,1,2015-02-03,37,汉,河南省郏县薛四谛法号,公安局,156558969461,,,,,2016-01-18 11:12:20,172,70,27';
          //  tmps:='123';
          len:=Length(tmps);
          a:=0;
          //  ('中午')   AnsiToUtf8('aaa')
//          WriteBufData(len,1);  WriteBufData(a,1); ;
//          WriteStr(tmps);
 sm.WriteBuffer(a,1);
sm.WriteBuffer(Len,1);


          sm.WriteBuffer(tmps[1],len);
          sm.Position:=0;
          //   IdTCPClient1.IOHandler.Write(sm.DataString);
          IdTCPClient1.IOHandler.Write(sm);
//          、、  IdTCPClient1.WriteLn(( '中午'));
//IdTCPClient1.Writeln(fdata);
          //  IdTCPClient1.WriteLn(( '中午'));

          ss:= IdTCPClient1.IOHandler.ReadLn(IndyTextEncoding(TEncoding.ANSI))  ;
          Memo1.Lines.Text:=ss;
//    IdTCPClient1.IOHandler.Send(tmps);
end;
----------------------------------------------
-
作者:
男 msfm (清洁工) ★☆☆☆☆ -
盒子活跃会员
2016/1/21 16:16:21
1楼: 我测试过 erlang 单机 我设置了 连接 8W 竟然一点问题没有 超强 够用了
----------------------------------------------
-
作者:
男 msfm (清洁工) ★☆☆☆☆ -
盒子活跃会员
2016/1/21 16:17:58
2楼: 难兄难弟 不让人待见的 2个语言
----------------------------------------------
-
作者:
男 eastroads (eastroads) ★☆☆☆☆ -
普通会员
2016/1/21 18:00:04
3楼: 感觉很强大的样子,楼主能多八一点吗
----------------------------------------------
-
作者:
男 qiuyan81 (苦恋树) ★☆☆☆☆ -
普通会员
2016/1/22 9:03:14
4楼: erlang本身就是高并发并行执行的设计,
不过这语法貌似比objective-C 还扯淡..
----------------------------------------------
作者:
男 zwjchinazwj (蒲石) ★☆☆☆☆ -
普通会员
2016/1/26 10:11:40
5楼: 当各种语言在朝着自然语言接近的时候,erlang go反其道而行,接近机器,让机器更容易解读。难推广也就在所难免。
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行66.40625毫秒 RSS