#param sIp ip 地址
	#param iPort 端口
	#param fDCb 收到数据回调,listen 类型的 accept 时的 fd 接收到数据回调
	#param fCCb 连接成功时回调
	def DoConnect(self,sIp,iPort,fDCb,fCCb,fCloseCb):
		try:
			stSock = self.CreateSock(socket.IPPROTO_TCP)
		except socket.error, arg:
			eno, err_msg = arg
			logger.error("connect sock error id=%d ip=%s port=%d eno=%d err_msg=%s"%(stCmd.m_Id,sIp,iPort,eno,err_msg))
			return -1 
		stFd  = self.CreateFdData(fDCb,fCCb,fCloseCb)	
		iFd   = stFd.m_iFd
		#打开一个连接
		sFlag = SocketServer.CmdType.eCmdOpenType
		stCmd = SocketServer.ConnectCmd(sFlag,iFd,self.GetThreadId(),stSock,sIp,iPort)
		self.m_stPartsMgr.m_stSockServer.PushCmd(stCmd)
		logger.debug("do connect ip=%s port=%d fd=%d fileno=%d"%(sIp,iPort,iFd,stSock.fileno()))
		return iFd

	#创建 sock
	def CreateSock(self,iProtocol):
		iSockType = None 
		if iProtocol == socket.IPPROTO_TCP: 
			iSockType = socket.SOCK_STREAM
		else:
			iSockType = socket.SOCK_DGRAM
		try:
			logger.debug("proto type=%d tcp=%d"%(iSockType,socket.SOCK_STREAM))
			stSock = socket.socket(socket.AF_INET,iSockType)
			stSock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)