Adskillelse af pakker i Socket kommunikation
Jeg laver et program der bruger TCPClient til at sende simple kommandoer. Problemer er at når der modtages på den anden side, bliver nogle af kommandoerne samlet til én. Det sker helt fordi at data bliver sendt for hurtigt. Det virker ikke at flushe. Jeg sender på følgende måde:byte[] bytes = System.Text.Encoding.Default.GetBytes(message);
client.GetStream().Write(bytes, 0, bytes.Length);
og modtagelsen sker med
try
{
if(client.GetStream().CanRead)
{
byte[] buffer = new byte[client.ReceiveBufferSize];
builder = new StringBuilder();
int bytes = 0;
do
{
bytes = client.GetStream().Read(buffer, 0, buffer.Length);
builder.Append(Encoding.Default.GetString(buffer, 0, bytes));
}
while(client.GetStream().DataAvailable);
string received = builder.ToString();
return received;
}
}
catch(Exception e){}
return "";
Eksempel på kommandoer er afsendelse af keystrokes, med deres keyvalue "KEY 32"
Eksempel på fejlkunne være "32KEY 67"
Jeg kunne self. lave en skille karakter, men en af kommandoerne sender meget komplekse data.
