2012-09-27 18 views
5

Engelleme olmayan soketler kullanarak olay tabanlı bir sunucu (istek yanıtı protokolü - HTTP gibi) yazdım. Her birkaç saniyeden sonra isteği ayrı parçalara gönderen bir istemci yazarak kısmi okumaları test ettim. Kısmi yazımları nasıl test ederim, yani 100 byte yazmalı ve sonra sadece 10 bayt yazılarak çağrı geri dönüşleri göndermeliyim.Bir ağ sunucusunu sınamak için kısmi yazım nasıl zorlanır

Perl tabanlı istemciler yazıyorum. Bu SSL'nin üzerindedir, ancak bu sorunun amaçları için, TCP'deki kısmi yazımlarla tamamım.

cevap

0

TCP akış denetimini kullanın - istemcinizi soketten çok yavaş bir şekilde okuyun, böylece gönderen (sunucu) soket arabelleği veriyi doldurur. Bu tampon sadece bir parçası çıkışını göndermek yapmalıdır

err = setsockopt(fd, SOL_SOCKET, SO_SNDBUF, 1) 

:

2

çıktı tamponunun boyutunu azaltmak için deneyin.

0

Çok sayıda veriyi çok hızlı bir şekilde yazın. (Jan tarafından önerildiği gibi)

veya

örneğin kendi gönderme fonksiyonunu

oluştur çıkış tampon çok küçük olun hep < 100 bayt göndererek eğer hariç 100 bayt kısa gönderecek

ssize_t mysend(int sockfd, const void *buf, size_t len, int flags) 
{ 
    int shortlen = len - 100 > 0 ? len - 100; len 
    return send(sockfd, buf, shortlen, flags); 
} 

. Aksi takdirde, verebildiğiniz şeyi gönderir. Kısmi gönderim işleminizin doğru şekilde çalıştığını doğruladıktan sonra, çağrıyı, hackary kodunuzdaki sıradan gönderim ve silme mysendine geri döndürmek için değiştirin.

İlgili konular