LINUX.ORG.RU

Вопрос по работе с сетью.


0

1

Доброй ночи. Пишу программу по работе с сетью и столкнулся со следующей проблемой. Программа работает через UDP сокеты(так нужно). Как сделать, чтобы сервер принимал сообщение с 4х разных айпи в порядке их прибывания, чтоб успевал их обработать. Нужно просто записать эти сообщения в файл. Программа считает решение уравнения гармонических колебаний по методу эйлера(4 уравнения решаются каждое на своем компьютере), поэтому 4 решения приходят в ряд по отношению к изменению аргумента в системе.

Чего надо-то? Чтобы сервер не терял пакеты, пока пишет в файл, или что?

mv ★★★★★
()

Простейший вариант — работай с сокетами в один поток в блокирующем режиме. Поймал сообщение, записал, ждешь следующее.

staseg ★★★★★
()

Попытка телепатического перевода: вы высылаете задания 1,2,3,4 на слейвы и хотите в мастере записать в файл результаты в соотв. с номерами, а не тем кто быстрее посчитался ?

не вижу проблем. Более того, я не вижу тут вопросов к сети. Просто логика организации вычислений - высылайте задачи и принимайте ответы вместе с номерами

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

Есть сервер и 4-ре отдельных процессора со своей отдельной памятью. На каждом из них решается свое уравнение гармонических колебаний. Они попарно обмениваются между собой, т.е 1 со 2, а 3 с 4 и наоборот. При этом после каждого просчета они еще отправляют решение на сервер. Проблема в том что сервер не успевает обработать 4 сообщения в одном потоке, потому как тем 4м нужно принять только по одному сообщению в конкретный промежуток времени, а серверу 4. Из-за этого решение начинает далеко уходить от идеального.

SeredaOleg
() автор топика
Ответ на: комментарий от SeredaOleg

Ну а почему не сделать так: сначала принимать все сообщения в сыром виде, сохранять их в очередь в локальной памяти, а потом только обрабатывать?

post-factum ★★★★★
()
Ответ на: комментарий от SeredaOleg

то-то я уже потерялся :0 Или ТС никак не может сформулировать проблему.

Программа работает через UDP сокеты(так нужно)...Нужно просто записать эти сообщения в файл...сервер не успевает обработать 4 сообщения в одном потоке, потому как тем 4м нужно принять только по одному

у вас что-то вообще нетак:) Получается, что непосредственно время расчёта на узле сопоставимо со временем генерации задания и приёмом ответа сервером. В такой ситуации нет смысла параллелить по сети, быстрее сразу посчитать на сервере.

Из-за этого решение начинает далеко уходить от идеального.

а это как ? точность теряется ??

MKuznetsov ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.