1.server_tcp.py
import logging from socketserver import BaseRequestHandler, TCPServer, UDPServer from threading import Thread logging.basicConfig( level=logging.INFO, # 定义输出到文件的log级别,大于此级别的都被输出 format='%(asctime)s %(filename)s %(levelname)s : %(message)s', # 定义输出log的格式 datefmt='%Y-%m-%d %H:%M:%S', # 时间 filename="./server_tcp.log", filemode='a') # 写入模式“w”或“a” console = logging.StreamHandler() console.setLevel(logging.INFO) # 设置格式 formatter = logging.Formatter('%(asctime)s %(filename)s %(levelname)s : %(message)s') # 告诉handler使用这个格式 console.setFormatter(formatter) # 为root logger添加handler logging.getLogger('').addHandler(console) class EchoHandler(BaseRequestHandler): def handle(self): while True: logging.info('Got connection from:{}'.format(self.client_address)) msg = self.request.recv(8192).decode("utf-8").strip() if not msg: break else: # print("msg:{}".format(msg)) self.request.send(msg.encode("utf-8")) if __name__ == '__main__': # 服务端的ip地址 server_ip = '0.0.0.0' # 服务端socket绑定的端口号 server_port = 5554 NWORKERS = 100 serv = TCPServer((server_ip, server_port), EchoHandler, bind_and_activate=True) # 绑定socket服务端所在ip和端口号 TCP for n in range(NWORKERS): t = Thread(target=serv.serve_forever) t.daemon = True t.start() serv.serve_forever()
2.client_tcp.py
import logging import time from socket import socket, AF_INET, SOCK_STREAM, SOCK_DGRAM logging.basicConfig( level=logging.INFO, # 定义输出到文件的log级别,大于此级别的都被输出 format='%(asctime)s %(filename)s %(levelname)s : %(message)s', # 定义输出log的格式 datefmt='%Y-%m-%d %H:%M:%S', # 时间 filename="client_tcp.log", filemode='a') # 写入模式“w”或“a” console = logging.StreamHandler() console.setLevel(logging.INFO) # 设置格式 formatter = logging.Formatter('%(asctime)s %(filename)s %(levelname)s : %(message)s') # 告诉handler使用这个格式 console.setFormatter(formatter) # 为root logger添加handler logging.getLogger('').addHandler(console) # 服务端的ip地址 server_ip = "10.8.67.236" # server_ip = "192.168.104.150" # server_ip = "45.199.148.36" # server_ip = "192.168.104.150" # 服务端socket绑定的端口号 server_port = 5554 # 请求次数 count = 10 # 请求暂停时间 time_sleep = 1 # 字节B byte_count = 100 if __name__ == '__main__': start_time = time.time() for i in range(count): str_msg = "a" * byte_count if str_msg != "": client = socket(AF_INET, SOCK_STREAM) client.connect((server_ip, server_port)) for j in range(10): bytes_msg = bytes(str_msg, encoding="utf-8") client.send(bytes_msg) data = client.recv(8192).decode("utf-8") logging.info("-------{}:{}".format(j, data)) time.sleep(0.1) # time.sleep(time_sleep / 1000) client.close() logging.info("*" * 100) logging.info("总耗时时长:{}".format(str(time.time() - start_time)))
3.server_udp.py
import logging from socketserver import BaseRequestHandler, TCPServer, UDPServer from threading import Thread logging.basicConfig( level=logging.INFO, # 定义输出到文件的log级别,大于此级别的都被输出 format='%(asctime)s %(filename)s %(levelname)s : %(message)s', # 定义输出log的格式 datefmt='%Y-%m-%d %H:%M:%S', # 时间 filename="./server.log", filemode='a') # 写入模式“w”或“a” console = logging.StreamHandler() console.setLevel(logging.INFO) # 设置格式 formatter = logging.Formatter('%(asctime)s %(filename)s %(levelname)s : %(message)s') # 告诉handler使用这个格式 console.setFormatter(formatter) # 为root logger添加handler logging.getLogger('').addHandler(console) class EchoHandler(BaseRequestHandler): def handle(self): logging.info('Got connection from:{}'.format(self.client_address)) data = self.request[0].strip() socket = self.request[1] socket.sendto(data, self.client_address) if __name__ == '__main__': # 服务端的ip地址 server_ip = '192.168.61.205' # 服务端socket绑定的端口号 server_port = 20000 NWORKERS = 100 # serv = TCPServer((server_ip, server_port), EchoHandler) # 绑定socket服务端所在ip和端口号 TCP serv = UDPServer((server_ip, server_port), EchoHandler) # 绑定socket服务端所在ip和端口号 UDP for n in range(NWORKERS): t = Thread(target=serv.serve_forever) t.daemon = True t.start() serv.serve_forever()
4.client_udp.py
import logging import time from socket import socket, AF_INET, SOCK_STREAM, SOCK_DGRAM logging.basicConfig( level=logging.INFO, # 定义输出到文件的log级别,大于此级别的都被输出 format='%(asctime)s %(filename)s %(levelname)s : %(message)s', # 定义输出log的格式 datefmt='%Y-%m-%d %H:%M:%S', # 时间 filename="client_udp.log", filemode='a') # 写入模式“w”或“a” console = logging.StreamHandler() console.setLevel(logging.INFO) # 设置格式 formatter = logging.Formatter('%(asctime)s %(filename)s %(levelname)s : %(message)s') # 告诉handler使用这个格式 console.setFormatter(formatter) # 为root logger添加handler logging.getLogger('').addHandler(console) # 服务端的ip地址 # server_ip = "10.8.67.236" server_ip = "192.168.104.150" # server_ip = "45.199.148.36" # 服务端socket绑定的端口号 server_port = 6665 # 请求次数 count = 1 # 请求暂停时间 time_sleep = 1 # 字节B byte_count = 100 if __name__ == '__main__': start_time = time.time() for i in range(count): # str_msg = input("请输入要发送信息:") str_msg = "a" * byte_count if str_msg != "": bytes_msg = bytes(str_msg, encoding="utf-8") # client = socket(AF_INET, SOCK_STREAM) client = socket(AF_INET, SOCK_DGRAM) client.connect((server_ip, server_port)) for i in range(100): client.send(bytes_msg) data = client.recv(8192).decode("utf-8") logging.info("-------{}:{}".format(i, data)) time.sleep(1) time.sleep(time_sleep / 1000) client.close() logging.info("*" * 100) logging.info("总耗时时长:{}".format(str(time.time() - start_time)))