Я хотел бы сделать некоторый клиент и сервер для обмена файлами друг с другом. У меня проблема, потому что «сообщения» TCP «слиты», несмотря на то, что я задал количество байтов, которые я бы хотел отправить, и сколько их получили.Multi send() или receive() в TCP
Я посмотрел на него, и проблема возникает, когда в первом «сообщении» я отправляю имя файла, и после этого (в новой Send()) я отправляю содержимое файла, например.
Я исправил это, отправив сообщение обратной связи после каждого пакета приема в настоящее время.
Есть ли лучший способ сделать это?
Возможный дубликат [Потеря данных TCP IP C#] (http://stackoverflow.com/questions/5528234/data-loss-tcp-ip-c-sharp) – CodesInChaos
Другие дубликаты: [1] (http: // stackoverflow.com/q/8575659/445517) [2] (http://stackoverflow.com/q/9895132/445517) – CodesInChaos
Я сделал что-то вроде 'string msg =" test "; байт [] buf = новый байт [1024]; byte [] prefix = BitConverter.GetBytes (msg.Length); byte [] data = Encoding.UTF8.GetBytes (msg); Array.Copy (префикс, 0, buf, 0, prefix.Length); Array.Copy (данные, 0, buf, prefix.Length, data.Length); socket.Send (buf); ' , но я не знаю, как получить сообщение сейчас. – deem