PDA

Просмотр полной версии : C# Точная отправка сообщение на сервер


need_million
28.05.2010, 16:53
Мне требуется отправить запрос на сервер ровно в 10-00-00-(10\20 миллисек погрешность).

проблема в том что запрос может происходить разное время, 1-3 секунд.
можно как то отправлять весь запрос к проме последнего байта, без которого обработка не начнется ?

или как поступить в этой ситуации?

eLWAux
28.05.2010, 20:20
или как поступить в этой ситуации?
добавить таймер, который в нужное время сделает запрос

BrainDeaD
28.05.2010, 20:42
эл, ты не так понял. он хочет чтоб запрос пришёл на сервер в 10-00-00 с 10\20 миллисек погрешностью. а после отправки зазор в 1-3 сек. тоесть не подгадаешь время отправки.

Chrome~
28.05.2010, 21:29
Лично мое мнение: тебе не получится это сделать. Могут быть по одиночные успешные случаи, но и то не всегда.

need_million
29.05.2010, 09:48
так и спрашиваю, может есть вот такая система..что как то потоков отправляется запрос на сервер, и последний байт придерживается.

Chrome~
29.05.2010, 10:45
Последний байт тоже может получить сервак с задержкой в несколько миллисекунд. Все зависит от того, на сколько загружен твой канал и канал сервера.

need_million
29.05.2010, 11:55
ну так это уменьшает риск не попасть..
я понял что если смогу добиться хотя бы 1-3 сек это уже будет супер пупер.

так что с байтом последним можно?

хотя есть ещё трабл, сервак отрабатывает долго, наверное БД большая и пока он по ней проходится и все данные сверяет это тоже время которое вообще не реально высчитать=(

Chaak
29.05.2010, 12:23
ну так это уменьшает риск не попасть..
я понял что если смогу добиться хотя бы 1-3 сек это уже будет супер пупер.

так что с байтом последним можно?

хотя есть ещё трабл, сервак отрабатывает долго, наверное БД большая и пока он по ней проходится и все данные сверяет это тоже время которое вообще не реально высчитать=(
Попробуй пропингуй сервер за 5-6 секунд до запроса и выполни запрос раньше на время пинга.

need_million
29.05.2010, 12:51
запрос идет столько же сколько и пинг?



как пинговать средствами C# ?
про пинг сам нашел ответ
using System.Net.NetworkInformation;
using System.Net;
Ping p = new Ping();
PingReply pr = p.Send(@"www.google.com")
IPStatus status = pr.Status; //IPStatus.Success
IPAddress ipAddr = pr.Address;
long pingTime = pr.RoundtripTime;
вот получил я с сайта "41" - что это значит, когда запрос отправлять?

Chaak
29.05.2010, 13:42
на 41 милисекунду раньше
в 9.59.59 , а не в 10.0.0

need_million
29.05.2010, 13:59
буду пробывать.

Qwazar
29.05.2010, 14:53
Арендуй сервер в том же ДЦ и с него шли запрос ровно в 10.

need_million
29.05.2010, 15:00
я как маленький...а как узнать ДЦ ?

Chaak
29.05.2010, 20:42
whois :)