Dzięki za odpowiedzi jeszcze raz.
Ale jest pewien zonk - dajmy na to, mam mój NetworkStream (każdy klient ma inny).
Chce ODEBRAĆ te dane (Ty sam ustalileś id i tekst).
private static void HandleWelcomePacket(NetworkStream stream)
{
MemoryStream memoryStream = new MemoryStream();
byte[] buffer = new byte[4];
stream.Read(buffer, 0, 4);
int id = BitConverter.ToInt32(buffer, 0);
buffer = new byte[4];
stream.Read(buffer, 0, 4);
int length = BitConverter.ToInt32(buffer, 0);
buffer = new byte[512];
stream.Read(buffer, 0, 4);
string tekst = BitConverter.ToString(buffer);
byte[] tekstBytes = Encoding.GetEncoding(1250).GetBytes(tekst);
byte[] lengthBytes = BitConverter.GetBytes(length);
byte[] idBytes = BitConverter.GetBytes(id);
memoryStream.Write(idBytes, 0, 4);
memoryStream.Write(lengthBytes, 0, 4);
memoryStream.Write(tekstBytes, 0, tekstBytes.Length);
// odczyt
memoryStream.Position = 0;
byte[] idReadBuffer = new byte[4];
memoryStream.Read(idReadBuffer, 0, 4);
int idRead = BitConverter.ToInt32(idReadBuffer, 0);
Console.WriteLine("ID pakietu: " + idRead.ToString()); // WYSKAKUJE KOSMICZNA LICZBA
byte[] lengthReadBuffer = new byte[4];
memoryStream.Read(lengthReadBuffer, 0, 4);
int lengthRead = BitConverter.ToInt32(lengthReadBuffer, 0);
byte[] tekstReadBuffer = new byte[lengthRead];
memoryStream.Read(tekstReadBuffer, 0, lengthRead);
string tekstRead = Encoding.GetEncoding(1250).GetString(tekstReadBuffer);
Console.Write(tekstRead);
}
Kod wysyłający dane z delphi
(id pakietu i teksT)
```delphi
procedure Send(id : integer; msg : string);
var Buffer:TMemoryStream;
var len, i : integer;
begin
Buffer:=TMemoryStream.Create;
msg := UTF8Encode(msg);
len:=Length(msg);
Buffer.WriteBuffer(len, 4);
Buffer.WriteBuffer(id, 4);
Buffer.Write(PCHAR(msg)^, len);
form_main.EntentaSocket.Socket.SendBuf(Buffer, 4);
form_main.EntentaSocket.Socket.Free;
Buffer.Free;
if(id = 800) then
begin
form_main.Text.Text := '';
form_main.Text.Focused();
end;
end;
nie bardzo wiem jak sie tym zająć...