全部博文(362)
分类:
2011-03-02 13:23:59
Erlang 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({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 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) 本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/4614/showart_179490.html |