Thread Socket-Probleme... (19 answers)
Opened by Oliver at 2019-10-24 15:05

Linuxer
 2019-10-27 20:35
#190810 #190810
User since
2006-01-27
3869 Artikel
HausmeisterIn

user image
Hi,

hier mal ein einfaches Testskript, das verschiedene Ausgabe-Varianten ausprobiert.

Anstatt in einen Socket zu schreiben, wird eine Testdatei geschrieben.
Diese Dateien können dann mit einem Hex-Editor gelesen und verglichen werden.

Mein Test fand auf einem Linux System mit Perl 5.26.2 statt.
Zum Lauf auf Windows müsste der Pfad für die Ausgabe-Dateien angepasst werden.

more (7.5kb):

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
#! /usr/bin/perl
use strict;
use warnings;

use 5.020;

# data to "send"
my @data = qw( 45 53 43 2F 56 50 2E 6E 65 74 10 03 00 00 00 00 50 57 52 3f 0D );

my $testfile = "/tmp/test.%d.dat";

sub write_test {
    my ( $num, @data ) = @_;
    my $file = sprintf $testfile, $num;

    open my $wh, ">", $file or die "open($file,w) failed: $!\n";

    print $wh @data;

    close $wh or die "close($file) failed: $!\n";
}

# see perldoc -f pack
write_test( 1, map { hex } @data );                   # print decimal value as text
write_test( 2, pack( 'C*', map { hex } @data ) );     # print unsigned char (octet) value
write_test( 3, pack( 'n*', map { hex } @data ) );     # print unsigned short (16-bit) in network (big-endian) order



Als Resultat sollten drei Dateien rausgekommen sein:
more (955b):

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
# test.1.dat
00000000: 3639 3833 3637 3437 3836 3830 3436 3131 6983674786804611
00000010: 3031 3031 3131 3631 3633 3030 3030 3830 0101116163000080
00000020: 3837 3832 3633 3133 87826313

# test.2.dat
00000000: 4553 432f 5650 2e6e 6574 1003 0000 0000 ESC/VP.net......
00000010: 5057 523f 0d PWR?.

# test.3.dat
00000000: 0045 0053 0043 002f 0056 0050 002e 006e .E.S.C./.V.P...n
00000010: 0065 0074 0010 0003 0000 0000 0000 0000 .e.t............
00000020: 0050 0057 0052 003f 000d .P.W.R.?..


Demnach sollte das pack("C*", ... ) eigentlich schon das gewünschte bringen.
Last edited: 2019-10-27 20:43:14 +0100 (CET)
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Socket-Probleme...