C# SLIP protokol, praca s string – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

C# SLIP protokol, praca s string – .NET – Fórum – Programujte.comC# SLIP protokol, praca s string – .NET – Fórum – Programujte.com

 

TD
~ Anonymní uživatel
28 příspěvků
26. 4. 2016   #1
-
0
-

Dobry večer, Mam dotaz kda tady nekdo skoušel implementovat protokol SLIP v C# či už pro seriovu komunikaci alebo jine druhy komunikace. Jedna sa o prehledavani pola(stringu) a hledani určitych znaku v HEX. Mam problem jakym štilem pracovas s hex stale mi to prekodovava do divneho microsoft kodovana. Za každu radu dekuju.

Nahlásit jako SPAM
IP: 89.103.90.–
Ovrscout
~ Anonymní uživatel
113 příspěvků
27. 4. 2016   #2
-
0
-

#1 TD

Jeli tím myšleno https://cs.wikipedia.org/wiki/SLIP :

C# String obsahuje text ve formátu unicode, tady to asi není uplně dobrá volba, ten slip může obsahovat cokoliv(nejen text) a navíc jsou tam ty náhrady znaků. To nemůže dělat dobrotu.

Asi by bylo s tím na začátku a pracovat v poli byte[].
Tedy, načtení dat, vyhledání koncové značky a provedení náhrady ESC sekvencí. Teprve potom bych se rozhodoval jestli danný telegram převést na string.
To finální převedení na text má samozřejmně smysl jenom pokud víš že v tom telegramu je uložen text a víš v jakém je kódování, pro UTF8 se dá použít např System.Text.Encoding.UTF8.GetString(..)
 

Nahlásit jako SPAM
IP: 193.165.79.–
TD
~ Anonymní uživatel
28 příspěvků
28. 4. 2016   #3
-
0
-

To je dobra myšlenka dekuju moc :) a ked mi budu chodit do serivke ruzne dlhe data tam tam mam napevno vytvorene pole o velkosti 15 napr a ked mi dojde "ahoj" tak jak spravym aby mi stale nechodil po prekodovani stakyto sting "ahoj000000000" ?? Dekuju

Nahlásit jako SPAM
IP: 89.103.90.–
q
~ Anonymní uživatel
219 příspěvků
28. 4. 2016   #4
-
0
-

#3 TD
Po tom "překódování" snad víš, jak jsou ta data dlouhá.

Nahlásit jako SPAM
IP: 213.211.51.–
Ovrscout
~ Anonymní uživatel
113 příspěvků
29. 4. 2016   #5
-
0
-

#3 TD

Jak psal q, v tom bufferu(byte[]) si najdes konec telegramu a tak budes vedet jak ma byt text dlouhy.
Take je dobre si udrzovat kolik dat se do toho bufferu zapsalo(a nova data pridavat na konec. Kdyz najdes konec telegramu tak si ten pocet nactenych dat vynulujes(nebo pokud budes mit za koncem jeste nejaka data tak je presunes na zacatek pole a upravis delku a znovu zkontrolujes  jestli tam neni dalsi telegram ...))

Ta funkce pro převod na text má více variant vstupních parametrů, jedna z nich umožňuje zadat i počáteční index a počet bajtů tim vytvoris text jen z toho co ma opravdu text byt.

Pokud se jedná o velikost vstupního bufferu, tak pokládám za lepší mít předem alokovanou rozumnou velikost než při každém příjmu alokovat nový buffer(což může v závislosti na tom z čeho čteš a jak data dále používáš může vést k nepěknému chování ve spojitosti s garbagekolektorem případně piningem).
Navíc pokud to opravdu nevíš jak může být vstup velký tak můžeš po naplnění bufferu použít resize nebo udělat nový větší(s rezervou) buffer a data do něj překopírovat, a starý buffer zahodit.

Nahlásit jako SPAM
IP: 193.165.79.–
TD
~ Anonymní uživatel
28 příspěvků
7. 5. 2016   #6
-
0
-

#5 Ovrscout
Diky moc :) toto fungovalo prerfektne ked sem to aplikoval na seriovou komunikaci ale teraz mam trocha problem s Stream pri TCP komunikaci. Ked si vytvorim StreamWrite a StreamRead každy premenu zvlašt a do  oboch napišem client.getstream();  tak to jede v pohode ale potom nemozem posilat a primat pole byte. Jedine pole chat alebo string a temu sa chcem vzhnut z duvodu ich kodovana. ale ked si vytvorim podla tohoto : https://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient.getstream(v=vs.110).aspx

tak potom mi to vzhadzuje chybu : Operace není povolena na soketech, které nejsou připojen. popripade 6e neni vztvořen nejakej objekt. Diky za každou radu

Nahlásit jako SPAM
IP: 89.103.90.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 14 hostů

Podobná vlákna

String to hex ebo Byte()"string" — založil Roman Uherek

Protokol třídy — založil Vyhulman

ICQ = protokol??? — založil master

CCTalk protokol — založil x-time

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý