Aplikacja klient serwer TCP przesyłanie danych z list

0

Witam, mam aplikację klient-serwer opartą na socets Tcp. Mam zrobione w niej przesyłanie za pomocą binarywriter/reader zawartości richtexboxa. Pojawił się jednak problem, bo muszę teraz z z serwera przesłać zawartość listboxa i tablicy ArrayList. Normalnie z listboxa nie można przesłąć, bo wyskakuje że nie jest to string, konwertujac do stringa też nie działa, próbwałem wiele sposobów, ale jakoś nie wchodzi mi to...

Jedyne co przychodzi mi do głowy, to w odzielnym stringu zapisywać zawartość lisboxa i przesyłać ten string i po stronie klienta odpowiednia go ciąć i wrzucać do listboxa, ale imho jest to bardzo nie optymalne, nie ładne i nie praktyczne rozwiązanie, dlatego prosiłbym o wskazówki jak to rozwiązać.:)

0

Próbowałeś serializacji?

0

Tcp po binarywriter/reader, arraylisty.. Kolega chyba zatrzymał się na .NET 1.0.

Polecam się przyjrzeć WCF oraz kolekcjom generycznym.

0

nie próbowałem serializacji, bo i o niej nigdy nie słyszałem...spróbuje.
Może i zatrzymałem się na .NET 1.0 ale dopiero się uczę, a komunikatora które udało mi się znaleźć znalazłem właśnie tylko tak robione i na tym bazowałem, ale dzięki za wskazówkę na pewno się zapoznam z tym.

0

Próbuję tej serializacji, ale mi coś nie wychodzi, proszę o pomoc jak mam zserializować listę listbox, przesłać ją (serwer) i z deserializować ją na kliencie. Próbowałem tak:

-dodałem :

using System.Runtime.Serialization.Formatters.Binary;

using System.Runtime.Serialization;

lisbox1.Items.Add(dane) *dodaje dane typu string do listy

....

NetworkStream stream = klient.GetStream(); *strumien

i serializacja..

IFormatter formatter = new BinaryFormatter();

formatter.Serialize(stream, listBox1); // próbowałem też dodać do listbox1.Items ale nie pomogło.

Znalazłem fdzieś przykład serializacji do pliku i też nie działa mi, a wywala jakiś wyjątek chyba.

Co do deserializacji nie wiem całkiem jak się zabrać więc proszę o pomoc, jakąś wskazówkę w którą stronę i jak to ugryźć:)

0

jakieś postępy odnośnie serializacji poczyniłem ale jest to jeszcze dalekie, (a może bliskie) do działania, w każdym razie nie działa.

W aplikacji serwer która my wysyłać dodałem:

List<string> listat = new List<string>() ;

....

listBox1.DataSource = null;

listBox1.DataSource = listat;

i póżniej serializuję listat

W kliencie natomiast który ma odebrać i umieścić w listboxie:

listBox1.DataSource = null;

IFormatter formatter = new BinaryFormatter();

List<string> listat = (List<string>)formatter.Deserialize(stream);

listBox1.DataSource = listat;

Efekt taki, że nawet umieszcza mi w kliencie w listboxie, tylko to co nie do końca chcę, bo sam nagłówek:

˙˙˙˙ System.Collections.Generic.List`1System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 _items_size_version

(jest to zawartość tylko zserializowana do pliku, ale w listboxie wywala podobnie. Da się żeby tego nie pokazywało?)

I ogólnie zwraca mi jeszcze wyjątek w aplikacji klient.

Hmm chyba prościej i szybciej bym to zrobił, za pomocą tych stringów i parsowania, ale jak się wziąłem za serializację to chcę się czegoś nowego nauczyć, także wielkie dzięki za pomoc :)

0

jakieś postępy odnośnie serializacji poczyniłem ale jest to jeszcze dalekie, (a może bliskie) do działania, w każdym razie nie działa.

W aplikacji serwer która my wysyłać dodałem:

List<string> listat = new List<string>() ;

....

listBox1.DataSource = null;

listBox1.DataSource = listat;

i póżniej serializuję listat

W kliencie natomiast który ma odebrać i umieścić w listboxie:

listBox1.DataSource = null;

IFormatter formatter = new BinaryFormatter();

List<string> listat = (List<string>)formatter.Deserialize(stream);

listBox1.DataSource = listat;

Efekt taki, że nawet umieszcza mi w kliencie w listboxie, tylko to co nie do końca chcę, bo sam nagłówek:

˙˙˙˙ System.Collections.Generic.List`1System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 _items_size_version

(jest to zawartość tylko zserializowana do pliku, ale w listboxie wywala podobnie. Da się żeby tego nie pokazywało?)

I ogólnie zwraca mi jeszcze wyjątek w aplikacji klient.

Hmm chyba prościej i szybciej bym to zrobił, za pomocą tych stringów i parsowania, ale jak się wziąłem za serializację to chcę się czegoś nowego nauczyć, także wielkie dzięki za pomoc :)

0

jakieś postępy odnośnie serializacji poczyniłem ale jest to jeszcze dalekie, (a może bliskie) do działania, w każdym razie nie działa.

W aplikacji serwer która my wysyłać dodałem:

List<string> listat = new List<string>() ;

....

listBox1.DataSource = null;

listBox1.DataSource = listat;

i póżniej serializuję listat

W kliencie natomiast który ma odebrać i umieścić w listboxie:

listBox1.DataSource = null;

IFormatter formatter = new BinaryFormatter();

List<string> listat = (List<string>)formatter.Deserialize(stream);

listBox1.DataSource = listat;

Efekt taki, że nawet umieszcza mi w kliencie w listboxie, tylko to co nie do końca chcę, bo sam nagłówek:

˙˙˙˙ System.Collections.Generic.List`1System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 _items_size_version

(jest to zawartość tylko zserializowana do pliku, ale w listboxie wywala podobnie. Da się żeby tego nie pokazywało?)

I ogólnie zwraca mi jeszcze wyjątek w aplikacji klient.

Hmm chyba prościej i szybciej bym to zrobił, za pomocą tych stringów i parsowania, ale jak się wziąłem za serializację to chcę się czegoś nowego nauczyć, także wielkie dzięki za pomoc :)

0

jakieś postępy odnośnie serializacji poczyniłem ale jest to jeszcze dalekie, (a może bliskie) do działania, w każdym razie nie działa.

W aplikacji serwer która my wysyłać dodałem:

List<string> listat = new List<string>() ;

....

listBox1.DataSource = null;

listBox1.DataSource = listat;

i póżniej serializuję listat

W kliencie natomiast który ma odebrać i umieścić w listboxie:

listBox1.DataSource = null;

IFormatter formatter = new BinaryFormatter();

List<string> listat = (List<string>)formatter.Deserialize(stream);

listBox1.DataSource = listat;

Efekt taki, że nawet umieszcza mi w kliencie w listboxie, tylko to co nie do końca chcę, bo sam nagłówek:

˙˙˙˙ System.Collections.Generic.List`1System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 _items_size_version

(jest to zawartość tylko zserializowana do pliku, ale w listboxie wywala podobnie. Da się żeby tego nie pokazywało?)

I ogólnie zwraca mi jeszcze wyjątek w aplikacji klient.

Hmm chyba prościej i szybciej bym to zrobił, za pomocą tych stringów i parsowania, ale jak się wziąłem za serializację to chcę się czegoś nowego nauczyć, także wielkie dzięki za pomoc :)

0

jakieś postępy odnośnie serializacji poczyniłem ale jest to jeszcze dalekie, (a może bliskie) do działania, w każdym razie nie działa.

W aplikacji serwer która my wysyłać dodałem:

List<string> listat = new List<string>() ;

....

listBox1.DataSource = null;

listBox1.DataSource = listat;

i póżniej serializuję listat

W kliencie natomiast który ma odebrać i umieścić w listboxie:

listBox1.DataSource = null;

IFormatter formatter = new BinaryFormatter();

List<string> listat = (List<string>)formatter.Deserialize(stream);

listBox1.DataSource = listat;

Efekt taki, że nawet umieszcza mi w kliencie w listboxie, tylko to co nie do końca chcę, bo sam nagłówek:

˙˙˙˙ System.Collections.Generic.List`1System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 _items_size_version

(jest to zawartość tylko zserializowana do pliku, ale w listboxie wywala podobnie. Da się żeby tego nie pokazywało?)

I ogólnie zwraca mi jeszcze wyjątek w aplikacji klient.

Hmm chyba prościej i szybciej bym to zrobił, za pomocą tych stringów i parsowania, ale jak się wziąłem za serializację to chcę się czegoś nowego nauczyć, także wielkie dzięki za pomoc :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1