我有一個用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。此外,當多個客戶commnuniate比它的問題。 2.另一種方式是通過這種方式 首先發送SizeofByarray 比發送對象數組。 – dotnetstep 2011-12-17 13:28:14