I einen Client in C# gemacht, und ich möchte ein Server-Build unter Linux haben, in C.Linux kann keine ganze Zahl ist, kodiert von BitConverter.GetBytes read()
Ich verwende einen Präfix mit „-Nachricht "Länge für jede" Nachricht ". Ich kodiere es zu byte[]
Array mit BitConverter.GetBytes()
(4 Bytes Array). Danach schicke ich es von
socket.Send(prefix, prefix.Length, 0);
Die C-Server auf Linux kann die Zahl nicht lesen. Es zeigt ein seltsames Zeichen, obwohl es 4 Bytes gelesen hat.
Linux-Seite sieht aus wie
char prefix[4];
int bytes = 0;
bytes = recv(s, prefix, 4, 0);
printf("%s", prefix);
Wenn ich die Nummer kodieren von Encoding.UTF8.GetBytes()
mit, Linux es richtig versteht.
Ich habe es getestet, und es sieht das Problem ist nur, wenn die Programme in diesen 2 verschiedenen Sprachen codiert sind.
Was ist los?
Bitte den Empfangscode anzeigen. –
Warum drucken Sie es als * string *? Es ist eine 4-Byte-codierte Ganzzahl - es ist kein Text. Sie sollten es * zurück * in eine 32-Bit-Ganzzahl konvertieren. –
@JonSkeet Ich versuche 'int n = (int) Präfix;' und das Ergebnis ist 'segmentation fault'. – deem