Escenario. Tengo un cliente con dos conexiones de red a un servidor. Una conexión usa un teléfono móvil y la otra usa una conexión wlan.Forma simple de simular una red lenta en python
La forma en que he resuelto esto es haciendo que el servidor escuche en dos puertos. Pero, la conexión móvil debe ser más lenta que la conexión wlan. Los datos que se envían generalmente son solo una línea de texto. He resuelto el problema de conexión más lenta al permitir que la conexión móvil envíe datos en un intervalo de cinco segundos, la conexión wlan tiene un intervalo de un segundo.
¿Pero hay una mejor manera de hacer la ralentización? ¿Quizás enviando paquetes más pequeños, lo que significa que necesito enviar más datos?
¿Alguna idea sobre una buena forma de ralentizar una de las conexiones?
Orjanp
Un ejemplo simple cliente con una sola conexión.
def client():
import sys, time, socket
port = 11111
host = '127.0.0.1'
buf_size = 1024
try:
mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mySocket.connect((host, port))
except socket.error, (value, message):
if mySocket:
mySocket.close()
print 'Could not open socket: ' + message
sys.exit(1)
mySocket.send('Hello, server')
data = mySocket.recv(buf_size)
print data
time.sleep(5)
mySocket.close()
client()
Un servidor simple que escucha un puerto.
def server():
import sys, os, socket
port = 11111
host = ''
backlog = 5
buf_size = 1024
try:
listening_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
listening_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
listening_socket.bind((host, port))
listening_socket.listen(backlog)
except socket.error, (value, message):
if listening_socket:
listening_socket.close()
print 'Could not open socket: ' + message
sys.exit(1)
while True:
accepted_socket, adress = listening_socket.accept()
data = accepted_socket.recv(buf_size)
if data:
accepted_socket.send('Hello, and goodbye.')
accepted_socket.close()
server()
¿Qué estás tratando de reducir la velocidad? –
Relacionados: http://stackoverflow.com/questions/1094760/network-tools-that-simulate-slow-network-connection – ChristopheD
Este es un problema difícil ... las conexiones móviles significan tiempos de viaje más largos/más paquetes caídos, etc. Es no hay simulación real para simplemente enviarlos a intervalos más lentos. – Shirkrin