TCP Сокет. Иногда приходят неверные данные - C#
Формулировка задачи:
При отправка данных с клиента на сервер....иногда случается так, что данные отправленные на сервер клиентом не совпадают в теми что пришли на сервер.
Протокол TCP. Синхронная передача и приём.
Например..отправляю 50 файлов..25 передаст нормально..на 26 ляжет..
Немного псевдокода
На сервере тоже самое только
Вот скриншот того,что иногда приходит вместо данных.
У меня вопрос только 1. Это где-то ошибка в коде..или нужно дополнительно фильтровать то, что пришло на сервер?
foreach(Filename in Filenames) { SEND(Filename); SEND(SIZE OF (FILE)); SEND (FILE); } Каждый из этих методов что-то отсылает и что-то принимает. (Синхронно)
RECV(Filename) RECV (SIZE) RECV(FILE
Решение задачи: «TCP Сокет. Иногда приходят неверные данные»
textual
Листинг программы
public void ReciveCommand(Socket Handler) { int BytesRecive = 0; int BytesSend = 0; byte[] Message = new byte[1024]; string MessageString = ""; int CommandSize = 0; string Size = ""; string TempSize = ""; bool isSize = true; while (isSize) { BytesRecive = Handler.Receive(Message, 1, SocketFlags.None); TempSize = ByteArrayToStr(Message, 1); if (TempSize.Equals("!")) { isSize = false; } else { Size += TempSize; } } BytesSend = Handler.Send(StrToByteArray("}"), 1, SocketFlags.None); CommandSize = int.Parse(Size); BytesRecive = Handler.Receive(Message, CommandSize, SocketFlags.None); BytesSend = Handler.Send(StrToByteArray("}"), 1, SocketFlags.None); MessageString = ByteArrayToStr(Message, BytesRecive); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д