socket测试

这篇博客主要探讨了如何进行Socket通信的测试,包括服务器端的设置和客户端的连接操作,是理解网络编程中Socket应用的一个实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

服务器端:

# /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()
    


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值