Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];

Вниз

Вопрос по ClientSocket и ServerSocet-у   Найти похожие ветки 

 
JFX   (2003-07-16 06:20) [0]

ClientSocket1.Host:=ServerName;
ClientSocket1.Open;
ClientSocket1.Socket.SendText("#NickId"+Nick);

Почему ServerSocket1 не сразу принимает сообщение, а только со второй или третьей попытки и то на событие ClientRead а на ClientWrite буфер пустой?
Буду очень признателен за помошь..


 
Rouse_   (2003-07-16 06:24) [1]

Первый вариант: кривой прием
Второй ваиант: кривые настройки сети
Третий вариант: с учетом уровня приведенного кода, на этом мысли останавливаются

Желаю успехов


 
Digitman   (2003-07-16 08:24) [2]

установи св-во ClientType = ctBlocking.


> на ClientWrite буфер пустой


а почему он должен быть полным ? сервер разве что-то отправляет клиенту ?


 
Fredericco   (2003-07-16 10:21) [3]

1) Принимает не с первого раза - проблемы в твоей программе.
2) При не блокирующем режиме, и на сервере и на клиенте, метод OnRead срабатывает, когда в буфере приема что-то есть. OnWrite - срабатывает, когда сокет готов к отправке данных, например, после того, как переполненный буфер на отправку наконец освободился.


 
Fredericco   (2003-07-16 10:36) [4]

При не блокирующем режиме такой код неверный

> ClientSocket1.Open;
> ClientSocket1.Socket.SendText("#NickId"+Nick);

Метод Open выполняется как бы в отдельном потоке. И об успешном или нет ее выполнении тебе сообщит OnConnect/OnError соответственно. А о том что сокет готов к отправке данных тебе сообщит первый вызов OnWrite после успешного выполнения Open.


 
JFX   (2003-07-17 08:20) [5]

бывает такая ситуация..
посылаю...
ClientSocket1.Socket.SendText("1");
ClientSocket1.Socket.SendText("2");


procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
Command:=Trim(Socket.ReceiveText);

command=="12"
т.е. они идут одним текстом...
приходиться ставить задержку и только тогда все ок..


 
Digitman   (2003-07-17 09:22) [6]


> JFX


> бывает такая ситуация


нормальная ситуация ! TCP-протокол-то - поточно-ориентированный !

не нужна здесь задержка.
достаточно, получив в событии OnRead() строку с несколькими идущими подряд "командами", провести парсинг и разбить строку на отдельные команды



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.009 c
4-58972
Vorobyev Sergey
2003-07-02 14:19
2003.09.18
Как считать версию файла,образ которого находится в памяти ?


4-58968
tipman
2003-07-17 10:12
2003.09.18
Вопрос по WaitForinputIdle...


14-58879
panov
2003-08-29 16:00
2003.09.18
Без слов-))


1-58726
Xtz
2003-09-07 21:01
2003.09.18
Как использывать таймер в консольном приложении и без QExtCtrls


11-58605
Alexander
2003-01-08 15:18
2003.09.18
Снова про ScreenSaver - так и не получил ответа на свой вопрос:





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский