Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2014, 23:13   #1
IT-Lopata
7 - классник
Форумчанин
 
Аватар для IT-Lopata
 
Регистрация: 27.03.2014
Сообщений: 181
Вопрос Работа с неблокирующими сокетами

Сервер отправляет на клиент несколько одинаковых структур (пачку от других подобных клиентов), как их там выгрести? socket.avalable постоянно растет несмотря на то что выполняется чтение receive, но я так подозреваю что не все выгребается а как можно выгребать все? И ни чего если я все сетевое взаимодействие на таймеры повесил 50-10мс ?
IT-Lopata вне форума Ответить с цитированием
Старый 23.04.2014, 09:00   #2
IT-Lopata
7 - классник
Форумчанин
 
Аватар для IT-Lopata
 
Регистрация: 27.03.2014
Сообщений: 181
По умолчанию

пацаны что вообще никаких думок нет?

может нужно receive в клиентах в отдельный поток сажать а в нем вечный цикл по выборке пока socket.avalable > 0 ?

У меня простая школьная задача для 6 кл. средней школы с.Чугуево.
Есть два типа приложения в проекте. Клиенты до 12 шт. и Выделенный сервер. сервер собирает сообщения от клиентов и потом отсылает каждому клиенту столько пакетов сколько активных клиентов. но клиенты видят только свои пакеты. как с этим бороться ? если я на сервере шлю сразу 10 одинаковых структур каждому? как их считать отдельно на стороне клиента все, а не одну первую?
IT-Lopata вне форума Ответить с цитированием
Старый 23.04.2014, 09:10   #3
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Код отправки и код чтения данных в студию! Без кода, в данном случае, практически ничего непонятно в плане причин возникновения проблемы.
Цитата:
У меня простая школьная задача для 6 кл. средней школы с.Чугуево.
Школа случаем не с углублённым изучением ИТ?

Последний раз редактировалось Streletz; 23.04.2014 в 09:14.
Streletz вне форума Ответить с цитированием
Старый 23.04.2014, 11:15   #4
IT-Lopata
7 - классник
Форумчанин
 
Аватар для IT-Lopata
 
Регистрация: 27.03.2014
Сообщений: 181
По умолчанию

Цитата:
Школа случаем не с углублённым изучением ИТ?
Нет, это обычная захолустная школа.


Цитата:
Код отправки и код чтения данных в студию! Без кода, в данном случае, практически ничего непонятно в плане причин возникновения проблемы.
Вот пожалуйста.
Код.
Клиент http://pastebin.com/id2RptFf
Сервер http://pastebin.com/1jFEdVDD

Я думаю что проблема в принятии данных клиентом. отсылка вроде норм для всех? сервер видит всех клиентов присваивает им ID. но клиент не адекватно себя ведет.
IT-Lopata вне форума Ответить с цитированием
Старый 23.04.2014, 17:27   #5
IT-Lopata
7 - классник
Форумчанин
 
Аватар для IT-Lopata
 
Регистрация: 27.03.2014
Сообщений: 181
По умолчанию

Пацаны ну разве никто не писал сетевые танчики ?

У меня задача в пределе именно такая, щас тренируюсь просто на птичках, чтобы нормально отображались для начала они и сервак работал.
IT-Lopata вне форума Ответить с цитированием
Старый 23.04.2014, 18:45   #6
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Почему нигде нет проверки на предмет количества отправленных и принятых байт? Я бы не был так уверен, что вся информация отправляется и принимается одним махом, ибо тут TCP, а не UPD протокол и деления на пакеты нет.
pu4koff вне форума Ответить с цитированием
Старый 23.04.2014, 23:08   #7
IT-Lopata
7 - классник
Форумчанин
 
Аватар для IT-Lopata
 
Регистрация: 27.03.2014
Сообщений: 181
По умолчанию

Цитата:
Я бы не был так уверен, что вся информация отправляется и принимается одним махом
Даже если размер структуры 28 байт? если сервер нагружен двумя клиентами то каждый должен получать по 56 байт по тику таймера.

А как я могу промониторить сколько отправлено и сколько осталось ?

Цитата:
ибо тут TCP, а не UPD протокол и деления на пакеты нет.
Как бы я отдаю на переправку структуру и рассчитываю её же получить на другом конце, вроде TCP-сокеты как раз должны справиться с такой легкой задачей.
IT-Lopata вне форума Ответить с цитированием
Старый 23.04.2014, 23:37   #8
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от IT-Lopata Посмотреть сообщение
Даже если размер структуры 28 байт?
Никогда нельзя быть ни в чём уверенным
Цитата:
Сообщение от IT-Lopata Посмотреть сообщение
А как я могу промониторить сколько отправлено и сколько осталось ?
Send и Receive возвращают количество отправленных и полученных байт соответственно.
Цитата:
Сообщение от IT-Lopata Посмотреть сообщение
Как бы я отдаю на переправку структуру и рассчитываю её же получить на другом конце, вроде TCP-сокеты как раз должны справиться с такой легкой задачей.
TCP работает на потоках, а не на пакетах, ему эти структуры по боку. Вполне может треть структуры отправить по первому Send, две трети по второму и то же самое с получением.
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с сокетами Thief_Brother Работа с сетью в Delphi 25 27.02.2012 11:04
Работа с сокетами в php Detka.i.alex PHP 0 30.08.2010 17:15
Работа с сокетами zumm Работа с сетью в Delphi 10 28.03.2010 15:30
**Работа с сокетами** Яр|/||< (^_^) Работа с сетью в Delphi 4 11.07.2009 18:10
Работа с сокетами vasilii_terkin Работа с сетью в Delphi 2 13.02.2007 11:08