あなたの質問にStream.Write()
を使用してソケットを構築しているようです。
メッセージタイプとある種のチェックサムを持つバイト配列を作成することができます。例:あなたは単純な文字列を送信することを越えて行くことがadventerous感じたら
string message = "this is your message";
byte packetType = 1;
byte checksum = 0;
// calculate a simple checksum
foreach (char c in message)
{
checksum ^= (byte)c;
}
// type, message, checksum into buffer
// (uses list instead of playing with arrays for expeditious example code)
List<byte> buffer = new List<byte>();
buffer.Add(packetType);
buffer.AddRange(ASCIIEncoding.UTF8.GetBytes(message));
buffer.Add(checksum);
// write out to the socket
CommStream.Write(buffer.ToArray(), 0, buffer.Count);
、実行時の名前空間を使用してバイト配列にシリアライズオブジェクトを試みることができます。
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
public class Message : ISerializable
{
DateTime timestamp;
byte type;
string message;
}
public byte[] BuildBuffer(Message input)
{
// Serialize the message
Stream s = new MemoryStream();
BinaryFormatter binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(s, input);
buffer = s.ToArray();
return buffer;
}
public Message BuildMessage(byte[] input)
{
Stream s = new MemoryStream(input);
s.Position = 0;
BinaryFormatter binaryFormatter = new BinaryFormatter();
return (Message)binaryFormatter.Deserialize(s);
}
私はWCFを使用して、Microsoftはすべてやらせるだろうあなたのためのハードネットワーキングの仕事。 –
古い引用を言い換えると、「問題が発生したときには、「わかっていますが、WCFを使用します。今、彼らには2つの問題があります。私は同意するWCFとNet.TCPのようなデュプレックスバインディングの1つは、おそらくこれに近づける最善の方法です:私のポイントは、MSがWCFであってもやることが大変な仕事です。 –