Pregunta

Tengo un servidor UDP que he estar intentando enviar estructuras método send () usando .. No hubo suerte hasta ahora ...

Esto es lo que estoy utilizando:

H, G son estructuras ...

lado del remitente:

IFormatter formatter = new BinaryFormatter();
MemoryStream stream = new MemoryStream();
formatter.Serialize(stream, H);
Byte[] buffer = stream.ToArray();
stream.Close();

y en el lado del receptor:

IFormatter formatter = new BinaryFormatter();
Stream s = new MemoryStream(buffer.Data);
ClientAnswerStruct G = (ClientAnswerStruct)formatter.Deserialize(s);
s.Close();
MessageBox.Show(G.name);

Pero me sale este error:

 Unable to find assembly 'UdpClientSample, Version=1.0.0.0, Culture=neutral,    PublicKeyToken=null'.

'UdpClientSample' pasa a ser el título del programa cliente que está enviando los datos al servidor ... Así que me pregunto si se tarda más de serialización para poder así enviar una estructura a través de la conexión UDP?

¿Hay un gran avance por ahí que explica lo que dice Iamamac?

¿Fue útil?

Solución

No he visto todo el código, pero supongo que el servidor y el cliente es de dos archivos ejecutables diferentes, y la clase ClientAnswerStruct se define dos veces en ambos lados. Cuando el receptor deserializar los datos, se trata de reconstruir un objeto ClientAnswerStruct pero no puede encontrar su definición (Tenga en cuenta que se define en el lado del emisor. A pesar de que en el lado del receptor hay una ClientAnswerStruct clase llamada, pero no son lo mismo) .

La forma correcta de hacerlo es definir la clase ClientAnswerStruct en una biblioteca de clases independiente, y dejar que el servidor y el código de cliente que incluyen ( 'añadir referencia' en C # terminología).

Otros consejos

Yo recomendaría aclarar su pregunta un poco. . . Estoy asumiendo que usted está tratando de utilizar la siguiente función en C o C ++?

  

Enviar ssize_t (int socket, const void   * Buffer, longitud size_t, int flags);

Vamos a saber qué tema específico que tiene, tales como:. Mensajes de error, código de ejemplo que no está funcionando, etc.

Si usted está hablando de C ++, que es una estructura de una clase, excepto en una estructura a todos los miembros son públicos por defecto. Técnicamente (pero importante) no está enviando una clase o una estructura, sino una instancia de un objeto o tipo de datos primitivo.

-BN

Como ya se dijo lamamac, esto no parece ser un problema de su código o funciones que utiliza. Es sólo que agregó una referencia a su aplicación llama UdpClientSample , pero cuando se inicia su aplicación no puede encontrar la aplicación necesaria.

El primer método más simple para resolver este problema es seleccionar la referencia en su proyecto, haga clic en él, seleccione propiedades y establecer la propiedad copia local en true.

Si ahora la aplicación comienza a ejecutar debe hacer una reflexión sobre la carga orden o usando AssemblyResolve o usando ILMerge

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top