使用python内建asyncore编写socket client

一般写服务器的时候需要编写一个机器人来辅助自己测试。这里就是使用python内建的库编写一个socket机器人。

'''
Created on 2013-3-8

@author: Administrator
'''
import socket
import asyncore
import struct
import logging
import time

class TCPClient(asyncore.dispatcher):
    '''
    classdocs
    '''

    def __init__(self):
        '''
        Constructor
        '''
        asyncore.dispatcher.__init__(self)
        self.send_buf_ = ''
        self.recv_buf_ = ''
        self.is_conn_ = False
        self.ip_ = "localhost"
        self.port_map_ = 9250
        pass

    '''
    network callback function
    '''
    def handle_connect( self ):
        logging.debug("connect establishment ...")
        self.is_conn_ = True
        self.connect_time_ = time.time()
        pass

    def handle_close( self ):
        self.is_conn_ = False
        logging.debug("handle_close.")
        self.close()
        pass

    def handle_read( self ):
        sub_buf = self.recv( MAX_RECV_CACHE )
        if len(sub_buf) == 0:
            return
        self.recv_buf_ = self.recv_buf_ + sub_buf
        logging.debug("handle_read, recv size: %d"%len(self.recv_buf_))
        pass

    def handle_error(self):
        logging.debug("handle_error")
        pass

    def handle_write( self ):
        if not self.is_conn_:
            return
        logging.debug("handle_write.")
        sent = self.send( self.send_buf_ )
        self.send_buf_ = self.send_buf_[sent:]
        pass

    def writable( self ):
        return (len( self.send_buf_ ) > 0)

    def readable(self):
        return True
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值