o(* ̄︶ ̄*)o

  博客园  :: 首页  ::  :: 联系 :: 订阅 订阅  :: 管理

python关于socket 封装

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

import socket, select;
import traceback;
 

class _NetSocket():
 	pSocket = None;
 	pClientCenter = None;
 	pVecSocket = None;
 	pcallback = None;

 	pRevcSocketCallBack = None;   # 获得的socket
 	pRevcCallBack = None;  # 收到包回掉
 	pCloseCallBack = None; #关闭回调
 	pErrorCallBack = None; #出错消息

 	#初始化
 	def __init__(self):
 		pass;




 	##
	# 关闭网络
	#
	def closeNet(self):
		if self.pCloseCallBack:
			self.pCloseCallBack();
		self.pSocket.close();

######################服务端#####################################
 	#网络连接
 	def connenctClinet(self, strIp, nPort, nListentCnt):
 		print strIp, nPort, nListentCnt;
 		self.pSocket = socket.socket(); 
		self.pSocket.bind((strIp, nPort));
		self.pSocket.listen(nListentCnt);
		
 		

 	#读取网络数据
 	def acceptClient(self):
 		inputs = [self.pSocket];
		rs,ws,es = select.select(inputs, [], []);
		while True:
			pClientSocket, pClientAddr = self.pSocket.accept();
			if self.pRevcSocketCallBack:
				pNetSocketObj = _NetSocket();
				pNetSocketObj.setSocket(pClientSocket);
				self.pRevcSocketCallBack(pNetSocketObj);



######################客户端#####################################
	#链接服务端
 	def connectSever(self, strIp, nPort):
 		self.pSocket = socket.socket(); 
		self.pSocket.connect((strIp, nPort));
 		

 	#接收服务端数据
 	def acceptSever(self):
 		while True:	
	 		if self.pRevcCallBack:
	 			pMsgData = self.pSocket.recv(1024);
				self.pRevcCallBack(pMsgData);
	 		

		
######################管理#####################################	
	##
	# 初始化socket
	#
	def setSocket(self, pSocket):
		self.pSocket = pSocket;
		if pSocket == None:
			print "pSocket == None";
		else:
		   print "save pSocket";

	##
	# 读取数据
	#
	def readSocket(self):
		try:
			if self.pSocket == None:
				print  "pSocket == None";
				return;
			pMsgData = self.pSocket.recv(1024);
			if self.pRevcCallBack:
				self.pRevcCallBack(pMsgData);
		except socket.error,e:
			if self.pErrorCallBack:
				self.pErrorCallBack(self);

 	#写入网络数据	
	def writeMsg(self, pMsgData):
		self.pSocket.send(pMsgData);		

  

posted on 2018-05-08 00:50  熊本熊の熊  阅读(923)  评论(0)    收藏  举报