Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]4617[/thread]

IO::Socket::SIPC: Neu



<< |< 1 2 >| >> 17 Einträge, 2 Seiten
bloonix
 2007-06-28 01:47
#39151 #39151
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Hallo Community,

soeben habe ich CPAN:IO::Socket::SIPC nach CPAN hochgeladen.

Ich würde mich über Meinungen, Vorschläge und alles drum herum freuen.

Cheers,
opi

Edit:

Das Modul liegt derzeit in einem Developer-Release vor und wird demnach
nur via cpan-tool mit Pfadangabe installierbar sein. :)\n\n

<!--EDIT|opi|1182980894-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
esskar
 2007-06-28 11:21
#39152 #39152
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Anmerkung:
zu den ersten 4 Bytes für die Größe:
ich hätte es so gemacht:
1 Byte => Anzahl der Längen Bytes, als L benannt
2 Byte - L-1 Byte => Länge der Daten
Somit hast du bei
* einer Message, die z.b. nur 256 Bytes lang ist, nur 258 Bytes gesamtlänge und nicht 260
* bei Messages Länger als 2^32 die chance, diese zu verschicken

Ich würde noch einen fingerprint mitschicken:

Entweder nach der Länge, oder nach den Daten. Z.b. CRC32 der Daten oder so!
bloonix
 2007-06-28 13:55
#39153 #39153
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Hey esskar,

schön mal wieder was von dir zu lesen :)

Ich bin kein Netzwerkspezialist, also bitte korrigiert mich, wenn ich falsch liege!

Also, die Idee mit der CRC Prüfung gefällt mir, allerdings ist dies im Einsatz
von TCP nicht unbedingt notwendig, weil TCP von Haus aus schon eine
Checksum für jedes Paket erstellt um Übertragungsfehlern vorzubeugen.
Selbst mit einer CRC Prüfung wäre man nicht vor Manipulation der Pakete
geschützt. Hier müsste dann wohl sowas wie eine MD5SUM zum
tragen kommen um die Datenintegrität zu gewährleisten, aber ich weiß
nicht, wie stark das die Performance beinträchtigt. Aber so wäre das dann
halt... Performance leidet immer unter Sicherheit. Eventuell könnte ich
dies als Option anbieten.

my $sipc = IO::Socket::SIPC->new( md5sum => 1 )

Zu den ersten 4 Bytes möchte ich anmerken, dass ein TCP-Segment in der
Regel eine Länge von 1500 Bytes hat - default MTU -, abzüglich Header,
Checksum und anderen Informationen verbleiben ca. 14XX Bytes Daten-
paket übrig. Also selbst wenn die Datenmenge 258 oder 260 Bytes lang
ist, wird es trotzdem in ein TCP-Segement passen. Natürlich... wenn die
Paketgröße um 1 Byte größer ist als das Nutzpaket, dann wird dieses letzte
Byte in eine weiteres Segment gepackt, aber ich denke, das haut TCP
nicht um.

Wenn man eine Schicht höher denkt - IP - dann können die Pakete sogar
noch größer sein.

Viele Grüße,
opi
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
esskar
 2007-06-28 14:22
#39154 #39154
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ja, du schränkst dich aber auf 4bytes für die länge selber ein.
klar, zwar auf 2^32 aber, naja!
bloonix
 2007-06-28 15:34
#39155 #39155
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Du meinst, das 4GB pro Sendung zu wenig sein könnte? :)

Das würde heißen, dass Prozess A 4GB Daten im Speicher vorliegen
hat und diese dann an Prozess B senden möchte. Aber du hast nicht
unrecht, was sind heute schon 4GB. Ich werde schauen wie ich deinen
Vorschlag umsetzen kann!
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
esskar
 2007-06-28 16:16
#39156 #39156
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ach lass sein ;)
aber vielleicht könntest du denn html-chunked ansatz verfolgen
bloonix
 2007-06-28 17:55
#39157 #39157
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
warum bist du eigentlich so selten auf #perlde ? :)

lass dich doch mal wieder dort blicken
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
bloonix
 2007-06-28 18:40
#39158 #39158
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Wie wäre es mit sowas?

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
use strict;
use warnings;
use Data::Dumper;
use Digest::MD5 qw/md5_hex/;
use Storable;
use POSIX qw/mkfifo/;

my $fifo = int(rand(999999999));
mkfifo($fifo, 0600) or die $!; 

my $md5 = Digest::MD5->new();
my $string = 'Hello World!';

if (fork) {
   my $freezed_data = Storable::nfreeze(\$string);
   my $md5_hex_sum  = md5_hex($freezed_data);
   my $data_packet  = pack("N/a*", $freezed_data);
   open my $fh, '>>', $fifo or die $!; 
   print $fh $md5_hex_sum, $data_packet or die $!; 
   close $fh;
   exit;
}

open my $fh, '<', $fifo or die $!; 
32 == read($fh, my $md5_buf_sum, 32) or die;
4 == read($fh, my $buffer, 4) or die;
my $length = unpack("N", $buffer);
$length == read($fh, my $freezed_data, $length) or die;
close $fh or die;
unlink($fifo) or die;
my $md5_hex_sum = md5_hex($freezed_data);
$md5_buf_sum eq $md5_hex_sum or die;
print "MD5 $md5_buf_sum\n";
print "MD5 $md5_hex_sum\n";
my $ref = Storable::thaw($freezed_data);
print Dumper($ref);


Oder die md5sum nochmal packen?
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
esskar
 2007-06-28 20:47
#39159 #39159
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
warum hex?
esskar
 2007-06-28 20:49
#39160 #39160
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
und ich würde, länge + daten + type-digest (1 byte, falls du md5 mal tauschen willst) + digest_von_daten\n\n

<!--EDIT|esskar|1183049414-->
<< |< 1 2 >| >> 17 Einträge, 2 Seiten



View all threads created 2007-06-28 01:47.