#!/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);