У Linux у мене немає проблем із завантаженням тонни даних у сокет домену, але той самий код на OS X 10.6.2 вибухає після приблизно 65 записів. Так виглядає код зчитування сокетів
#!/usr/bin/perl
use strict;
use warnings;
use IO::Socket;
unlink "foo";
my $sock = IO::Socket::UNIX->new (
Local => 'foo',
Type => SOCK_DGRAM,
Timeout => 600,
) or die "Could not create socket: $!\n";
while (<$sock>) {
chomp;
print "[$_]\n";
}
І клієнтський код виглядає так
#!/usr/bin/perl
use strict;
use warnings;
use IO::Socket;
my $sock = IO::Socket::UNIX->new (
Peer => 'foo',
Type => SOCK_DGRAM,
Timeout => 600,
) or die "Could not create socket: $!\n";
for my $i (1 .. 1_000_000) {
print $sock "$i\n" or die $!;
}
close $sock;
Я отримую повідомлення про помилку No buffer space available at write.pl line 15.
. Здається, досить очевидно, що є різниця в розмірі буфера між Linux і OS X, але я не знаю, як його встановити OS X (або які можливі негативні побічні ефекти можуть бути).