Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1719413
  • 博文数量: 362
  • 博客积分: 10587
  • 博客等级: 上将
  • 技术积分: 4098
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-10 18:15
文章分类

全部博文(362)

文章存档

2014年(1)

2013年(58)

2011年(115)

2010年(112)

2009年(76)

分类:

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
阅读(1126) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~