服务器端:
# /usr/bin/env python 2.7.6
# coding=utf-8
#
# 套接字服务器端测试模块
# 测试过程为:用户端给服务器端发送两个数据,一个是整数,一个为字符串。服务器端在接受到的整数数据上+10,字符串数据+‘110’,
# 并返还给用户端。用户端接收到数据并将整数*2,字符串数据+‘001’并发送给服务器端......
#
#2016/03/21
import socket
import time
class SocketTestServer(object):
'''套接字测试模块'''
def __init__(self, LOCALHOST, LOCALPORT, LOCALBUFFSIZE):
'''初始化'''
self.LOCALHOST = LOCALHOST #主机号
self.LOCALPORT = LOCALPORT #端口号
self.LOCALBUFFERSIZE = LOCALBUFFSIZE #缓存区大小
self.LOCALADDRESS = (LOCALHOST, LOCALPORT)
def GenServerSocket(self):
'''创建服务器端套接字'''
while True:
try:
print 'Generate the TCP server socket......'
tcpServerSocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #创建一个TCP的套接字
tcpServerSocket.bind(self.LOCALADDRESS) #把地址绑定到套接字上
tcpServerSocket.listen(10) #监听连接,最多允许10个连接同时连进来
print 'The TCP server socket building is finished.'
except:
print 'The TCP server socket building is failed'
finally:
break
return tcpServerSocket
def WaitConnecting(self, tcpServerSocket):
'''接受客户端连接'''
print 'waiting for connection......'
try:
tcpClientSocket, TxAddress = tcpServerSocket.accept() #接受客户端连接
time.sleep(1)
print 'The Connection address is :', TxAddress
except:
print 'No connection...... '
return tcpClientSocket
# return tcpClientSocket, TxAddress
def ServerReceiveData(self, tcpClientSocket):
'''服务器端接收数据'''
print 'Starting to receive the data......'
receiveData = eval(tcpClientSocket.recv(self.LOCALBUFFERSIZE)) #接收数据
time.sleep(1)
print 'The receiving data is :', receiveData
return receiveData
def ServerSendData(self, tcpClientSocket, sendData):
'''服务器端发送数据'''
print 'The sending data is :', sendData
print 'Starting to send the data......'
try:
tcpClientSocket.send(str(sendData)) #发送数据
time.sleep(1)
print 'The sending process is finished.'
except:
print 'The sending process is failed.'
def ServerTestProcess(self):
'''测试程序'''
tcpServerSocket = self.GenServerSocket()
while True:
# tcpClientSocket, TxAddress = self.WaitConnecting(tcpServerSocket)
tcpClientSocket = self.WaitConnecting(tcpServerSocket)
#先接收数据
receiveData1 = self.ServerReceiveData(tcpClientSocket)
print type(receiveData1)
receiveData2 = self.ServerReceiveData(tcpClientSocket)
print type(receiveData2)
while True:
receiveData1 += 10
receiveData2 = str(receiveData2) + '110'
self.ServerSendData(tcpClientSocket, receiveData1)
self.ServerSendData(tcpClientSocket, receiveData2)
receiveData1 = self.ServerReceiveData(tcpClientSocket)
receiveData2 = self.ServerReceiveData(tcpClientSocket)
if not receiveData1:
break
if not tcpClientSocket:
break
if __name__ == '__main__':
LOCALHOST = '127.0.0.1' #主机号,当本地主机号为空表示可以绑定在所有有效的地址上
LOCALPORT = 21567 #端口号
LOCALBUFFSIZE = 1024000 #缓存区大小设为10K
sockTestServer = SocketTestServer(LOCALHOST, LOCALPORT, LOCALBUFFSIZE)
sockTestServer.ServerTestProcess()
客户端:
# /usr/bin/env python 2.7.6
# coding=utf-8
#
# 套接字客户器端测试模块
# 测试过程为:用户端给服务器端发送两个数据,一个是整数,一个为字符串。服务器端在接受到的整数数据上+10,字符串数据+‘110’,
# 并返还给用户端。用户端接收到数据并将整数*2,字符串数据+‘001’并发送给服务器端......
#
#2016/03/21
import socket
import time
class SocketTestClient(object):
'''套接字测试模块'''
def __init__(self, LOCALHOST, LOCALPORT, LOCALBUFFSIZE):
'''初始化'''
self.LOCALHOST = LOCALHOST #主机号
self.LOCALPORT = LOCALPORT #端口号
self.LOCALBUFFERSIZE = LOCALBUFFSIZE #缓存区大小
self.LOCALADDRESS = (LOCALHOST, LOCALPORT)
def GenClientSocket(self):
'''创建客户端套接字'''
while True:
try:
print 'Generate the TCP client socket......'
tcpClientSocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #创建一个TCP的套接字
tcpClientSocket.connect(self.LOCALADDRESS) #把地址绑定到套接字上
print 'The TCP client socket building is finished.'
except:
print 'The TCP client socket building is failed.'
finally:
break
return tcpClientSocket
def ClientReceiveData(self, tcpClientSocket):
'''客户端接收数据'''
print 'Starting to receive the data......'
receiveData = eval(tcpClientSocket.recv(self.LOCALBUFFERSIZE)) #接收数据
time.sleep(1)
print 'The receiving data is :', receiveData
return receiveData
def ClientSendData(self, tcpClientSocket, sendData):
'''客户端发送数据'''
print 'The sending data is :', sendData
print 'Starting to send the data......'
try:
tcpClientSocket.send(str(sendData)) #发送数据
time.sleep(1)
print 'The sending process is finished.'
except:
print 'The sending process is failed.'
def ClientTestProcess(self):
'''测试程序'''
tcpClientSocket = self.GenClientSocket()
while True:
if tcpClientSocket:
intParam1 = 0
stringParam2 = '1'
while True:
self.ClientSendData(tcpClientSocket, intParam1)
self.ClientSendData(tcpClientSocket, stringParam2)
intParam1 = self.ClientReceiveData(tcpClientSocket)
stringParam2 = self.ClientReceiveData(tcpClientSocket)
intParam1 = intParam1 * 2
stringParam2 = str(stringParam2) + '001'
if __name__ == '__main__':
LOCALHOST = '127.0.0.1' #主机号,当本地主机号为空表示可以绑定在所有有效的地址上
LOCALPORT = 21567 #端口号
LOCALBUFFSIZE = 1024000 #缓存区大小设为10K
sockTestClient = SocketTestClient(LOCALHOST, LOCALPORT, LOCALBUFFSIZE)
sockTestClient.ClientTestProcess()