У меня есть клиент/серверное приложение, сделанное с C#. Он отлично работает, когда я отправляю строки сообщений на сервер. Но мне нужно отправлять (простые) объекты на сервер вместо строк. Но я не уверен, как это сделать. Я в настоящее время это для моего клиента:Отправить объект серверу на C#
Класс я хочу отправить:
[Serializable]
public class Actions
{
// Movement
public bool forward = false;
public bool left = false;
public bool backward = false;
public bool right = false;
}
Затем я отправить объект с помощью Send по умолчанию команды(). Но до этого я happends преобразовать класс действия в массив байт первым, так как:
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;
Тогда это дает мне ошибку, потому что она не знает, какие свойства имеет объект. Кто-нибудь знает, как это сделать?
1.Вы хотите только к розетке? Есть и другие решения для этого, например, для удаленного доступа или WCF. Также, когда несколько клиентов сообщают о своей проблеме. 2. Другой способ - пройти этот путь Сначала отправить SizeofByarray Than send object array. – dotnetstep