|
Подскажите по Winsock
|
|||
---|---|---|---|
#18+
Привет! Решил сделать что-то вроде пейджера с помощью Winsock. Типа клиент-сервер. На сервере Winsock в режиме Winsock.Listen(). Клиент ломится на IP:Port сервера методом Winsock.Connect() и во ответ на сервере срабатывает ConnectionRequest тогда же на сервере создается еще один объект Winsock с параметром RequestID из события Winsock.ConnectionRequest. Тут более-менее все понятно. Вопрос в следующем: на стадии соединения клиент еще получает от сервера данные и событие Winsock.DataArrival у клиента срабатывает. Но буквально через пару сек клиент от сервера ничего не получает, хотя тот отправляет. В то же время сервер от клиента получает данные нормально. Что интересно по истечении некоторого времени или накопления команд для клиента они таки попадают к клиенту, т.е. целой пачкой. И вот он и вопрос - а как сделать чтобы клиент нормально отрабатывал получение данных от серва? В чем тут заковыка? Соединение есть, данные вначале получает, а потом затыкается... Думал мож в размере передаваемых данных - типа пока не накопится достаточно то и клиент не получает - расширял до 255 байт - ничего не дало... PS. Делал на основе решения с foxclub. vfp9 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2008, 16:30 |
|
Подскажите по Winsock
|
|||
---|---|---|---|
#18+
А я внутреннюю систему обмена сообщениями сделал на SQL Server (он у меня и так используется). Вот тут подробности - http://www.caws.atnet.ru/vfox/sql.html Сначала думал Broker использовать, но на VFP тяжело сделать клиента нормального -там все под .NET заточено. А если только с помощью VFP все равно придется таймер использовать. С уважением, Алексей ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2008, 21:25 |
|
Подскажите по Winsock
|
|||
---|---|---|---|
#18+
В данный момент у меня так и сделано - через таймер. Но хочу Instant Messenger ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2008, 22:55 |
|
Подскажите по Winsock
|
|||
---|---|---|---|
#18+
CTAC-KOЧто интересно по истечении некоторого времени или накопления команд для клиента они таки попадают к клиенту, т.е. целой пачкой. Глупость скажу, но попробуй добить сообщение нечитаемыми символами до нужного размера. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2008, 00:33 |
|
Подскажите по Winsock
|
|||
---|---|---|---|
#18+
Попробую 0-ми. Пока скажу вот что: когда сервер программно отправляет данные - они нифига не отправляются, хотя метод отправки WinSock.SendData() запускается. Сделал я на серве возможность любому клиенту отослать мессагу (тексбокс и кнопа). Так вот, зная кому должна была уйти мессага программно, я тому отправлял мессагу "вручную", т.е. сам что-то набрал (даже 1 символ, т.е. неважно что и сколько) и нажал кнопу залать. В 100% случаев: 1) такую мессагу клиент обязательно получает 2) то что клиенту "отправлялась" пере этим программно - приходит первыми строками, за ним "ручная" мессага. т.е. налицо какая-то буфферизация программной отправки данных, но как от нее избаться - вот в чем вопрос! Пробовал играццо с AutoYield - не помогло... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2008, 01:49 |
|
Подскажите по Winsock
|
|||
---|---|---|---|
#18+
Добивание CHR(0) до 1024 байта - результат нулевой А вот помогло таки установка AutoYield в методе отправки данных. Ставим .F. перед отправкой и .Т. опосля. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2008, 19:34 |
|
|
start [/forum/topic.php?fid=41&msg=35725702&tid=1586942]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 343ms |
total: | 477ms |
0 / 0 |