|
Тема |
Re: 10055: Сокети/изчерпване на буфери / Контрол? [re: NikB] |
|
Автор | BashBabait (Нерегистриран) | |
Публикувано | 07.02.05 21:56 |
|
|
Първо: Моят личен съвет е да не ползваш TClientSocket/TServerSocket. Още преди време бях открил един Exception, който нямаше абсолютно никакъв начин да се прихване. Някаква абсолютна простотия, която между другото не се коригира от Borland. Не мога да се сетя до какъв извод достигнах дебъгвайки дори из сорсовете на TClientSocket, но тотално се изумих, когато установих, че прихващане на този Exception просто няма (става въпрос за asynchronous събитие което си настъпва с някакъв месидж, и преди или след да се извика хендлъра ти за обработка на събитието, не си спомням точно - то вземе че си изгърми само с един хубав прозорец за грешка). Това разбира се само при асинхронна употреба. При синхронна няма проблем но мен ме кефи първия стил.
И сега по въпроса ти: как точно проверяваш за наличие на сървърски сокет ? Т.е. проверяваш дали TClientSocket хендъла или там каквото беше е все още активен ? Как го правиш с каква функция ? Съвсем определено работиш със асинхронни сокети за да има нещо общо с буфери. Прихващаш ли събитията за отваряне и затваряне на сокета или по друг начин проверяваш ?
Един съвет за заключение - опитай се да си намериш сокет компонент, с който да свикнеш да работиш или сам си направи свой. Не разчитай за асинхронни сокети в никакъв случай на TClientSocket/TServerSocket. Дори самата им архитектура не е много мислена като че ли
|
| |
|
|
|