Vapros za CleintSocket
3 отговора
104 прегледа
Vapros za CleintSocket
Izpadnah v edna mnogo osobena situatsia.
Sazdavam clintsko pilojenie koeto ima SAMO TClientSocket componenta i se optvam da pratya tekstovo saobshtenie na drugo prilojenie v koeto ima TServerSocket componenta po sledniya anchin:
(1) ClientSocket1.Open;
(2) ClientSocket1.Socket.SendText('Test message');
(3) ClientSocket1.Close;
Obache kogato compilera za parvi pat vleze v (1)
ClientSocket1.Active stava True
!!! Ne prashta saobshtenieto i ne zatvarya Socketa (ClientSocket1.Active si ostava true)
Chak pri vtoroto povikvane na functsiyata sadarjashta tezi redove se izprashta saobshtenieto i se Socketa se zatvarya...
Ta vaprosa mi e zashto stava taka i kak moga da go preodoleya?
Za pomoshta vi blagodarya ot sega...
Sazdavam clintsko pilojenie koeto ima SAMO TClientSocket componenta i se optvam da pratya tekstovo saobshtenie na drugo prilojenie v koeto ima TServerSocket componenta po sledniya anchin:
(1) ClientSocket1.Open;
(2) ClientSocket1.Socket.SendText('Test message');
(3) ClientSocket1.Close;
Obache kogato compilera za parvi pat vleze v (1)
ClientSocket1.Active stava True
!!! Ne prashta saobshtenieto i ne zatvarya Socketa (ClientSocket1.Active si ostava true)
Chak pri vtoroto povikvane na functsiyata sadarjashta tezi redove se izprashta saobshtenieto i se Socketa se zatvarya...
Ta vaprosa mi e zashto stava taka i kak moga da go preodoleya?
Za pomoshta vi blagodarya ot sega...
Re: Vapros za CleintSocket
Mmm
Event onConnecetd nyama za TClientSocket, no sam go probval sas onConnect. Togava me dava greshka Asynchronous Socket Error 10061
Ne moje li da se nameri nyakakvo reshenie...?
Event onConnecetd nyama za TClientSocket, no sam go probval sas onConnect. Togava me dava greshka Asynchronous Socket Error 10061
Ne moje li da se nameri nyakakvo reshenie...?
Re: Vapros za CleintSocket
Ако си спомням правилно, 10061 означаваше нещо от сорта "Cannot connect to remote socked", т.е. нещо не си задал правилно - я адрес, а порт...
Обаче защо ми се струва, че нещо се объркваш между блокиращия и асинхронния вариант за комуникация? Най-първият ти пример щеше да работи прекрасно, ако сокетите ти бяха блокиращи, а не асинхронни.
Ключовия момент е там, че при асинхронните (както показва и името им) действието на една команда - напр. Connect - може да не е завършило след "излизането" от реда. Т.е. Connect при асинхронните сокети може да се чете като "започни да се свързваш", а не "свържи се". Затова те посъветваха да се закачаш за събития, които се извикват когато действието вече е завършило - а това всъщност е единствения начин за работа с асинхронни сокети.
Библиотеката Indy, която върви с Delphi след версия 6 реализира точно блокиращи сокети - може би на първо време е по-добре да ползваш нея, докато посвикнеш с материала.
Успех.
Обаче защо ми се струва, че нещо се объркваш между блокиращия и асинхронния вариант за комуникация? Най-първият ти пример щеше да работи прекрасно, ако сокетите ти бяха блокиращи, а не асинхронни.
Ключовия момент е там, че при асинхронните (както показва и името им) действието на една команда - напр. Connect - може да не е завършило след "излизането" от реда. Т.е. Connect при асинхронните сокети може да се чете като "започни да се свързваш", а не "свържи се". Затова те посъветваха да се закачаш за събития, които се извикват когато действието вече е завършило - а това всъщност е единствения начин за работа с асинхронни сокети.
Библиотеката Indy, която върви с Delphi след версия 6 реализира точно блокиращи сокети - може би на първо време е по-добре да ползваш нея, докато посвикнеш с материала.
Успех.