Skinney Skrevet 10. juni 2010 Del Skrevet 10. juni 2010 Hepp! Jobber med ett program som sender tekst fra en stasjon til en annen (ala e-mail). Sist jeg jobbet med noe lignende skrev jeg programmet i C# hvor man må gjøre om til en byte-array før man sender. I python sender jeg bare tekst frem og tilbake, men er dette en dum måte å gjøre det på? Er det noen fordeler ved å først gjøre om til bytes før jeg sender teksten, eller er det likesågreit å bare sende som en vanlig streng? Lenke til kommentar
TheMaister Skrevet 10. juni 2010 Del Skrevet 10. juni 2010 Tenker du socket-programmering nå? Er ikke mye vits å dele opp i bytes først, siden jeg vil tro at under the hood gjøres dette: buf = raw_input() <-- buf er en streng sock.send(buf) Vil da tro at socket-klassen gjør noe som dette i C: send(fd, buf, len(buf), 0); Tror ikke du skal trenge å bruke egne byte-arrays til dette. (en streng _er_ jo faktisk en byte array.) Lenke til kommentar
snippsat Skrevet 10. juni 2010 Del Skrevet 10. juni 2010 En måte er og bruke pickle til og transportere data fram og tilbake. #Forenkelt noe som dette somestring = 'Dette er en test' pickle_string = pickle.dumps(somestring) client.send (pickle_string) #motta unpickle my_data = pickle.loads(server.recv (1024)) print my_data Lenke til kommentar
zotbar1234 Skrevet 10. juni 2010 Del Skrevet 10. juni 2010 En måte er og bruke pickle til og transportere data fram og tilbake. ... som tilfeldigvis også er en måte å få boksen sin eid. pickle er fint kun dersom du har full kontroll over 1) den biten som lager dumpen 2) all infrastruktur der dumpen ligger/transporteres 3) den biten som laster dumpen inn igjen. (pickle er *ypperlig* for å lagre en komplisert datastruktur fra en programkjøring til en annen. Litt mindre ypperlig for nettverkstransport). Lenke til kommentar
Skinney Skrevet 10. juni 2010 Forfatter Del Skrevet 10. juni 2010 Mkay, det besvarer jo en del Lenke til kommentar
aC Skrevet 22. juni 2010 Del Skrevet 22. juni 2010 Hepp! Jobber med ett program som sender tekst fra en stasjon til en annen (ala e-mail). Sist jeg jobbet med noe lignende skrev jeg programmet i C# hvor man må gjøre om til en byte-array før man sender. I python sender jeg bare tekst frem og tilbake, men er dette en dum måte å gjøre det på? Er det noen fordeler ved å først gjøre om til bytes før jeg sender teksten, eller er det likesågreit å bare sende som en vanlig streng? "For Python < 3 'strings' are in fact binary strings and 'unicode objects' are the right text objects (as they can contain any Unicode characters). In Python 3 unicode strings are the 'regular strings' (str) and byte strings are separate objects. " [sNIP] Tror ikke du skal trenge å bruke egne byte-arrays til dette. (en streng _er_ jo faktisk en byte array.) Nja, det kommer veldig ann på. Mener du i python eller generelt. Strenger (slik det er implementert i C) er bytearrayer, strenger slik de er implementert i java er objekter og er ikke implementert som arrays (aka char's etter hverandre i et gitt minneområdet). Men som det ble avklart tidligere så er strenger måten å sende bytes på i python 2.x, mens i python 3.x vil du måtte sende de som socket.send(b"foo") hvor da bare socket.send("foo") ville vært unicode og blitt representert med 2 bytes. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå