Scenario. Ho un client con due connessioni di rete a un server. Una connessione utilizza un telefono cellulare e l'altra utilizza una connessione WLAN.Semplice modo per simulare una rete lenta in python
Il modo in cui l'ho risolto è che il server ascolta due porte. Ma la connessione mobile dovrebbe essere più lenta della connessione wlan. I dati che vengono inviati sono in genere solo una riga di testo. Ho risolto il problema di connessione più lento consentendo alla connessione mobile di inviare dati in un intervallo di cinque secondi, la connessione wlan ha un intervallo di un secondo.
Ma c'è un modo migliore per rallentare? Forse inviando pacchetti più piccoli, il che significa che ho bisogno di inviare più dati?
Qualche idea su un buon modo per rallentare una delle connessioni?
Orjanp
Un semplice esempio cliente con una sola connessione.
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 semplice server che ascolta una porta.
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()
Per cosa stai cercando di rallentare? –
Correlato: http://stackoverflow.com/questions/1094760/network-tools-that-simulate-slow-network-connection – ChristopheD
Questo è un problema difficile .. le connessioni mobili significano tempi di viaggio più lunghi/pacchetti più scartati ecc. nessuna simulazione reale per inviarli a intervalli più lenti. – Shirkrin