場景。我有一個客戶端與服務器的兩個網絡連接。一個連接使用手機,另一個連接使用wlan連接。模擬python中慢速網絡的簡單方法
,我已經解決了這一問題的方法是通過讓服務器在兩個端口上偵聽。但是,移動連接應該比wlan連接慢。發送的數據通常只是一行文本。我通過允許移動連接以5秒的間隔發送數據來解決較慢的連接問題,因此wlan連接的間隔爲一秒。
但是有沒有更好的方法來做減速?也許通過發送更小的數據包,意味着我需要發送更多的數據?
任何想法都可以減慢其中一個連接的速度嗎?
Orjanp
一個簡單的客戶端示例只有一個連接。
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()
一個簡單的服務器監聽一個端口。
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()
你想減慢什麼? – 2009-12-02 15:20:52
相關:http://stackoverflow.com/questions/1094760/network-tools-that-simulate-slow-network-connection – ChristopheD 2009-12-02 15:20:56
這是一個困難的問題..移動連接意味着更長的旅行時間/更多的下降包等 它是沒有真正的模擬,只是以較慢的間隔發送它們。 – Shirkrin 2009-12-02 15:39:18