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

Socket Binary übertragung

Leser: 1


<< |< 1 2 3 >| >> 22 Einträge, 3 Seiten
tuxilein
 2006-01-30 12:13
#37064 #37064
User since
2006-01-27
19 Artikel
BenutzerIn
[default_avatar]
Hallo Leute,

nun ich habe folgendes Problem:
Ich habe einen Socket Server mit Forks und nen Client - funktioniert auch wunderbar.

Die Kommunikation geht auch, nur der Server und Client kommuniziren per Crypt::CBC mit Blowfish verschlüsselt, dies Funktioniert an und für sich auch ohne probs nur wenn ich Binary Daten übertrage habe ich da ein prob. Unverschlüsselt habe ich es mit (un)pack( "H*", $var ) gemacht. Nur ein Prob ist, bei verschlüsselten Daten kommt nur die Hälfte an. Benutze ich en/decript_hex geht der binary datentransfer nicht.

So jetzt habe ich vor den ganzen datenverkehr mit en/decript_base64 zu übertragen.
Es kommt auch etwas an aber nur abgeschnitten, was mach ich falsch?

Es geht unverschlüsselt nicht - meine erste vorraussetzung - das es erst unverschlüsselt geht bevor ich verschlüssele den traffic.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use Crypt::CBC;  # Blowfish
use IO::Socket;
use MIME::Base64;


# zum bsp  die send func ein kleiner ausschnit
    if( $self->{cipher} )
    {
        $send_mesg = $self->{cipher}->encrypt( $send_mesg );
        $self->{cipher}->finish;
    }
    
    $send_mesg = encode_base64( $send_mesg );
    
    print $con "$send_mesg";
\n\n

<!--EDIT|tuxilein|1138616143-->
esskar
 2006-01-30 13:19
#37065 #37065
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
wahrscheinlich wird alles übertragen, du liesst nur zu wenig vom socket!
tuxilein
 2006-01-30 13:35
#37066 #37066
User since
2006-01-27
19 Artikel
BenutzerIn
[default_avatar]
naja kommischerweise ging es ja alles unverschlüsselt mit pack ...

nur mit base64 geht es nicht.

gruß
flo
tuxilein
 2006-01-30 13:39
#37067 #37067
User since
2006-01-27
19 Artikel
BenutzerIn
[default_avatar]
könnte es sein das

MIME::Base64

encode_base64()

den newline \n benutzt zum verschlüsseln?
tuxilein
 2006-01-30 13:45
#37068 #37068
User since
2006-01-27
19 Artikel
BenutzerIn
[default_avatar]
und mal wieder das eigene problem gelöst nach nem forumeintrag.

sorry aber wenn ich keinen machen würde würde ich nciht draufkommen.

eiso bei encode_base64 wird als zeilenende \n newlinechar benutzt unddas war scho das prob das kann man einfach ausschaulten:

Code (perl): (dl )
encode_base64( $data, '' );


danke euch leute!


CPAN MIME::Base64
esskar
 2006-01-30 18:20
#37069 #37069
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
das hört sich für mich an, als ob du mit
Code: (dl )
<$socket>
versuchst vom socket zu lesen.
ist meines erachtens keine gute idee.
les doch mit read:
dadurch brauchst du auch nicht nach hex oder base64 zu codieren, sondern kannst binär versenden, was natürlich die sache beschleunigt!
tuxilein
 2006-01-31 13:59
#37070 #37070
User since
2006-01-27
19 Artikel
BenutzerIn
[default_avatar]
danke - darauf bin i auch gekommen aber gut danke!

hast schon recht, das es ned so toll is die lösung von <socket> zu lesen - hab's gemerkt ;-)
tuxilein
 2006-02-01 13:09
#37071 #37071
User since
2006-01-27
19 Artikel
BenutzerIn
[default_avatar]
@esskar

nur wie löse ich es mit dem recv, das ich variabele frames/daten habe?

das geht mit <SOCKET> so gut. - klar hat nachteile!
esskar
 2006-02-01 13:33
#37072 #37072
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=tuxilein,01.02.2006, 12:09]nur wie löse ich es mit dem recv, das ich variabele frames/daten habe?[/quote]
diesen Satz versteh ich nicht!
tuxilein
 2006-02-01 14:38
#37073 #37073
User since
2006-01-27
19 Artikel
BenutzerIn
[default_avatar]
nun bis jetzt habe ich es mir einfach gemacht -> habe halt z.b. ein ganzes bin file in syswrite .... an den heandel geschrieben und auch gelesen somit hatte ich das ganze file auf "einmal" empfangen. ohne das ich wuste wie groß die größe ist die er lesen soll.

nun mit recv( BUFFER, SIZE[, FLAG] ), es wird ja die max größe benötigt.

ok oder so rum wie löst ihr es wenn ihr z.b. ein ganzes file wo man nicht weis wie groß es ist überträgt?

while?

danke
gruß
flo
<< |< 1 2 3 >| >> 22 Einträge, 3 Seiten



View all threads created 2006-01-30 12:13.