您的位置: 滁州资讯网 > 体育

Erlang与Python间的socket通讯

发布时间:2019-09-13 19:19:48

Server 端:

-module(eserver).

-author("hanzhupeng@gmail.com").

-export([startd/0, start/0,start/1,process/1]).

-define(defPort,2000).

startd() ->

register(eserverp, spawn(?MODULE, start, [])).

start() -> start(?defPort).

start(Port) ->

case gen_tcp:listen(Port, [binary, {packet, 0}, {active, false}]) of

{ok, LSock} -> server_loop(LSock);

{error, Reason} -> exit()

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()

end.

%% process current connection

process(Sock) ->

Req = do_recv(Sock),

Resp = "hello world",

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.

Python Client端

import socket

HOST = 'localhost' # The remote host

PORT = 6889 # The same port as used by the server

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.connect((HOST, PORT))

s.send('Hello, world')

data = s.recv(1024)

s.close()

print 'Received', repr(data)

小宝宝脸色发黄怎么回事
幼儿咳嗽怎么办
儿童口臭是什么原因
小孩健脾的药
猜你会喜欢的
猜你会喜欢的