greecket - a python not block socket module base the greenlet and thread - Google Project Hosting

greecket - a python not block socket module base the greenlet and thread - Google Project Hosting

greecket,基於greenlet和threading的python非阻塞模式socket模塊。

the greecket uer mail list:

web:http://groups.google.com/group/greecket

mail:[email protected]


example

greecket_test.py


#!/usr/bin/env python
#!coding=utf-8

import greecket
import sys



def onConnecting(evt):
   
print 'connecting',evt.AsList

def onConnected(evt):
   
print 'connected',evt.AsList
    evt
.Data.send('dfsdfsfsfff')
   
pass

def onReceive(event):
   
print 'data receive:',event.AsList

def onError(evt):
   
print 'error:',evt.AsList
   
print evt.Data.args[1]
   
pass

def onClose(evt):
   
print 'close',evt.AsList

def runasserver(address):#host='localhost',port=5423):
    factory
=greecket.Factory(address)
   
print 'server',factory
    factory
.bind(greecket.GREE_CONNECTING,onConnecting)
    factory
.bind(greecket.GREE_CONNECTIONMADE,onConnected)
    factory
.bind(greecket.GREE_DATARECEIVED,onReceive)
    factory
.bind(greecket.GREE_CONNECTIONLOST,onClose)
    factory
.bind(greecket.GREE_ERROR,onError)
    factory
.listen()
   
return factory

def client(address):
    factory
=greecket.Factory(address)
   
print 'client',factory
    factory
.bind(greecket.GREE_CONNECTING,onConnecting)
    factory
.bind(greecket.GREE_CONNECTIONMADE,onConnected)
    factory
.bind(greecket.GREE_DATARECEIVED,onReceive)
    factory
.bind(greecket.GREE_CONNECTIONLOST,onClose)
    factory
.bind(greecket.GREE_ERROR,onError)
    factory
.bind(greecket.GREE_DATARECEIVED,onReceive)
    factory
.bind(greecket.GREE_ERROR,onError)
    factory
.connect()
   
return factory

if __name__=='__main__':
   
print sys.argv
   
if len(sys.argv)>2:
        d
=tuple((sys.argv[-2],int(sys.argv[-1])))
   
else:
        d
=('localhost',5423)
   
if 'server' in sys.argv:
        f
=runasserver(d)
   
else:
        f
=client(d)
    f
.mainLoop()

你可能感兴趣的:(project)