私はソケットストリームを使用して、サーバとクライアント間の接続にプロトコルTcpを使用します。 Extern IPアドレス。 私の問題は、クライアントから送信されたすべてのデータを受信していないことです。 私は多くのソリューションをshearchしようとしたV、そして私はActual Data
を送った後Data Size
ファーストを送信するために持っていることを知った、それは私が例のためにしたものだけだった。C#ソケットストリーム、Tcpプロトコルを使用
string Data = ""; // my data here
string Crypted = crypt(Data); // just a method crypting string (work perfectly tested)
byte[] DataBytes = Encoding.Unicode.GetBytes(Crypted);
_ClientSocket.Send(BitConverter.GetBytes(DataBytes.Length),0,4,0);
_ClientSocket.Send(DataBytes,0,DataBytes.Length,0);
そして、そのようなSomethign受信用:
byte[] uffer;
byte[] BufferData;
int Size;
int Received;
uffer = new byte[4];
while (true)
{
uffer = new byte[4];
Size = _Client.Receive(uffer, 0, 4, 0);
if (Size > 0)
{
if (Size < _Client.ReceiveBufferSize)
{
BufferData = new byte[Size];
}
else
{
BufferData = new byte[_Client.ReceiveBufferSize];
}
Received = _Client.Receive(BufferData, 0, BufferData.Length, 0);
string Msg = Encoding.Unicode.GetString(buffer);
String Data = U.Decrypt(Msg);
}
しかし、私はまだデータを受け取りません。私はそれを受け取っていません。
問題を実際に示すコードを使用するように質問を編集してください(つまり、完全で最小限の再作成です)。注1私は過去にこのアプローチを使用してきました。 2.通常の.NET命名規則を使用してください。[SO]構文の強調表示がうまく機能します(かなり単純です)。 – Richard
4バイトの大きさを 'uffer'にすると、メッセージは' BufferData'に入りますが、コードスニペット以外では使用されない 'buffer'をデコードします。 –
@リチャードthats私のコードは、発行されたコードです。 –