服務器如何知道正在發送哪個序列化類?服務器如何檢測不同的序列化類? C#
客戶端:
public void SendCard(Card card)
{
var xmlSerializer = new XmlSerializer(typeof(Card));
xmlSerializer.Serialize(s, card);
}
public void SendStage(Stage stage)
{
var ser = new XmlSerializer(typeof(Stage));
ser.Serialize(s, stage);
}
服務器端:
private void Receive()
{
byte[] message = new byte[8192];
int bytesread;
s = a_client.GetStream();
while (true)
{
bytesread = 0;
try
{
//blocks until a message is read
bytesread = s.Read(message, 0, 8192);
}
catch (Exception z) { Console.WriteLine(z.Message); break; }
if (bytesread == 0)
{
// the client has disconnected
break;
}
//Message successfully received
ASCIIEncoding encoder = new ASCIIEncoding();
string smessage = encoder.GetString(message, 0, bytesread);
//Somewhere Here needs to detect if message is serialized Card, Stage, or string
}
}
像它需要一個良好的if語句或東西。並獲得錯誤,這篇文章主要是代碼..希望這個問題是可以解釋的。
數據在發送之前是XML序列化的,所以它應該使用XmlSerializer.Deserialize進行XMLDeSerialized。 – 2014-09-01 07:07:24
您是對的,但接收方如果知道客戶發送的是DeSerialize,Class Card或Class Stage,該怎麼辦? – 2014-09-01 07:21:27
我可能有一個解決方案來思考一下。如果(smessage.Contains(「)」)和if(smessage.Contains(「」)) - 基本讀取正在發送的XML。 – 2014-09-01 15:32:10