Имеется некоторые данные в структуре (без функций чистые данные типа bool, byte, int, double), которые находятся на сервере. По запросу клиента данные сериализируются и через сокет передаются клиенту. У клиента данные десериализируются в первоначальный вид для использования на клиенте.
Вопрос.
Сам сериализатор - десериализатор отдельно работает.
Сокет работает, но десериализация несет какую-то ахинею (см. лог).
mono AsyncClient.exe
Connecting to server: localhost
--------------------
Send to Server: Give me your Data
Receved from Server: 187 bytes
Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'AsyncServer' or one of its dependencies. The system cannot find the file specified.
File name: 'AsyncServer'
at (wrapper managed-to-native) System.AppDomain:LoadAssembly (string,System.Security.Policy.Evidence,bool)
at System.AppDomain.Load (System.String assemblyString) [0x00000]
at (wrapper remoting-invoke-with-check) System.AppDomain:Load (string)
at System.Reflection.Assembly.Load (System.String assemblyString) [0x00000]
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.GetDeserializationType (Int64 assemblyId, System.String className) [0x00000]
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadTypeMetadata (System.IO.BinaryReader reader, Boolean isRuntimeObject, Boolean hasTypeInfo) [0x00000]
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadObjectInstance (System.IO.BinaryReader reader, Boolean isRuntimeObject, Boolean hasTypeInfo, System.Int64& objectId, System.Object& value, System.Runtime.Serialization.SerializationInfo& info) [0x00000]
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadObject (BinaryElement element, System.IO.BinaryReader reader, System.Int64& objectId, System.Object& value, System.Runtime.Serialization.SerializationInfo& info) [0x00000]
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadObject (BinaryElement element, System.IO.BinaryReader reader, System.Int64& objectId, System.Object& value, System.Runtime.Serialization.SerializationInfo& info) [0x00000]
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadNextObject (System.IO.BinaryReader reader) [0x00000]
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ReadObjectGraph (System.IO.BinaryReader reader, Boolean readHeaders, System.Object& result, System.Runtime.Remoting.Messaging.Header[]& headers) [0x00000]
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.NoCheckDeserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler) [0x00000]
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream) [0x00000]
at Asutp.Data.dataFunc.DeserializeData (System.Byte[]& buf, Int32 len) [0x00000]
at Asutp.AsyncClient.AsyncClient.Run () [0x00000]
at Asutp.AsyncClient.AsyncClient.Main (System.String[] args) [0x00000]
al@ubuntu-desktop1:~/Desktop/ASUTP/TCP/AsyncClient/AsyncClient/bin/Debug$
Сижу и не могу ничего понять. Без сериализации-десериализации все работает. Сама сериализация-десериализация тоже. А с разнесенной сериализацией на сервере и десериализацией на клиенте полный облом.
Буду очень благодарен за наводку.
Пользователь решил продолжить мысль 05 Октября 2009, 08:09:25:
На всякий случай лог на сервере.
Client connected
Получено от клиента 18 байт
Отправлено клиенту 187 байт
Write complete
Read connection dropped
Т.е. клиент получает все сполна.
Пользователь решил продолжить мысль 05 Октября 2009, 13:41:04:
Вот нашел что-то близкое.
http://www.sql.ru/forum/actualthread.aspx?tid=128517Попробую, но умом это не понимаю.
Пользователь решил продолжить мысль 05 Октября 2009, 17:42:07:
Попробовал сериализацию-десериализацию разбитую по разным приложениям. Результат как с сокетом, аналогичный. Те же сообщения. Ситуация проясняется.