|
Как получить пакеты по очереди, а не одновременно (tcp ip)
|
|||
---|---|---|---|
#18+
Есть метод получающий команды и данные с сервера. Команды всегда имеют признак конца команды \r\n. А данные идут без такого признака. Например приходят 2 пакета "123" и "456". Данный метод может прочитать их правильно("123" и "456"), а может так "123456" Как изменить метод чтобы данные всегда читались правильно. Заранее благодарен за ответ. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2016, 11:38 |
|
Как получить пакеты по очереди, а не одновременно (tcp ip)
|
|||
---|---|---|---|
#18+
webber81Данный метод может прочитать их правильно("123" и "456"), а может так "123456" оба - правильно. webber81Как изменить метод чтобы данные всегда читались правильно. никак webber81А данные идут без такого признака. значит нужно предусмотреть разделитель ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2016, 11:47 |
|
Как получить пакеты по очереди, а не одновременно (tcp ip)
|
|||
---|---|---|---|
#18+
Изопропилwebber81А данные идут без такого признака. значит нужно предусмотреть разделительИли передавать в начале размер блока данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2016, 11:49 |
|
Как получить пакеты по очереди, а не одновременно (tcp ip)
|
|||
---|---|---|---|
#18+
Прогер который пишет серверную часть говорил что то про ReadLine ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2016, 12:00 |
|
Как получить пакеты по очереди, а не одновременно (tcp ip)
|
|||
---|---|---|---|
#18+
webber81Прогер который пишет серверную часть говорил что то про ReadLinewebber81А данные идут без такого признака.В "данных" же разделителя в виде конца строки нет? А так да, можно было бы попробовать Socket + NetworkStream + StreamReader + ReadLine. И если читать в блокирующем режиме, то программа будет проще. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2016, 12:15 |
|
Как получить пакеты по очереди, а не одновременно (tcp ip)
|
|||
---|---|---|---|
#18+
webber81Прогер который пишет серверную часть говорил что то про ReadLine а описание протокола он сделал? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2016, 12:24 |
|
Как получить пакеты по очереди, а не одновременно (tcp ip)
|
|||
---|---|---|---|
#18+
Алексей КИ если читать в блокирующем режиме, то программа будет проще.Хотя нет, использовать StreamReader.ReadLineAsync не на много сложнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2016, 12:26 |
|
Как получить пакеты по очереди, а не одновременно (tcp ip)
|
|||
---|---|---|---|
#18+
Изопропилwebber81Прогер который пишет серверную часть говорил что то про ReadLine а описание протокола он сделал?С описанием протокола писать клиента скучно и неинтересно. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2016, 12:30 |
|
Как получить пакеты по очереди, а не одновременно (tcp ip)
|
|||
---|---|---|---|
#18+
Алексей К, зачем это вообще делать? всё уже есть в коробочке, надо просто туда заглянуть и взять нужное :) но нет, мы будем писать велосипед ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2016, 12:41 |
|
Как получить пакеты по очереди, а не одновременно (tcp ip)
|
|||
---|---|---|---|
#18+
Алексей КС описанием протокола писать клиента скучно и неинтересно. :-) топикстартеру всё таки усвоить нужно, что на прикладном уровне в TCP никаких пакетов нет и его "команда" тоже может прийти по частям ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2016, 12:52 |
|
Как получить пакеты по очереди, а не одновременно (tcp ip)
|
|||
---|---|---|---|
#18+
Roman Mejtesзачем это вообще делать? всё уже есть в коробочке, надо просто туда заглянуть и взять нужное :) но нет, мы будем писать велосипед в учебных целях - почему нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2016, 12:53 |
|
Как получить пакеты по очереди, а не одновременно (tcp ip)
|
|||
---|---|---|---|
#18+
ИзопропилАлексей КС описанием протокола писать клиента скучно и неинтересно. :-) топикстартеру всё таки усвоить нужно, что на прикладном уровне в TCP никаких пакетов нет и его "команда" тоже может прийти по частям"Прогеру, который пишет серверную часть" и является автором протокола это усвоить тоже не помешает. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2016, 12:58 |
|
Как получить пакеты по очереди, а не одновременно (tcp ip)
|
|||
---|---|---|---|
#18+
То есть если данные идут без признака конца параметра, то восстановить их первоначальный вид невозможно. Даже если они были отправлены в разных пакетах. Я правильно понял? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2016, 13:47 |
|
Как получить пакеты по очереди, а не одновременно (tcp ip)
|
|||
---|---|---|---|
#18+
webber81Я правильно понял? да. отправка "123456" и "123","456" - одной или двумя операциями записи - для tcp - одно и то же. пакеты TCP прикладному программисту не видны, к вызовам send и recv отношения не имеют (никаого первоначального вида нет) PS не микроконтроллер ли является сервером? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2016, 14:10 |
|
Как получить пакеты по очереди, а не одновременно (tcp ip)
|
|||
---|---|---|---|
#18+
ИзопропилPS не микроконтроллер ли является сервером? Нет. Сервер обычный комп на винде. Серверная прога написана на шарпе. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2016, 14:28 |
|
|
start [/forum/topic.php?fid=20&fpage=58&tid=1400466]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 148ms |
0 / 0 |