У меня есть клиент-серверное приложение, созданное на C #. Работает нормально, когда я отправляю Строки сообщений на сервер. Но мне нужно отправлять (простые) объекты на сервер вместо строк. Но я не уверен, как это сделать. В настоящее время у меня есть это для моего клиента:
Класс, который я хочу отправить:
[Serializable]
public class Actions
{
// Movement
public bool forward = false;
public bool left = false;
public bool backward = false;
public bool right = false;
}
Затем я отправляю объект, используя команду Send () по умолчанию. Но до этого я сначала конвертирую класс Actions в байтовый массив, например:
public void SendObject ( object obj )
{
this.socket.Send ( this.ObjectToByteArray ( obj ) );
}
// Convert an object to a byte array
private byte[] ObjectToByteArray(object obj)
{
if(obj == null)
return null;
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, obj);
return ms.ToArray();
}
На стороне сервера я получаю такие данные (и вот где я застрял ...):
public void OnDataReceived(IAsyncResult asyn)
{
SocketPacket socketData = (SocketPacket)asyn.AsyncState;
try
{
// Complete the BeginReceive() asynchronous call by EndReceive() method
// which will return the number of characters written to the stream
// by the client
int iRx = socketData.m_currentSocket.EndReceive (asyn);
char[] chars = new char[iRx + 1];
// CONVERT THE BYTE ARRAY BACK TO AN OBJECT
//object Cls = this.ByteArrayToObject ( socketData.dataBuffer );
}
catch ( ... ) { }
}
Что мне нужно сделать, чтобы я мог получить доступ к объекту на сервере ?? Очевидно, когда я делаю:
Cls.forward;
Тогда это дает мне ошибку, потому что он не знает, какими свойствами обладает объект. Кто-нибудь есть идеи, как это сделать ??