IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

 
 Ответить  Открыть новую тему 
> компонент Tserversocket возвращает ошибку
Guest*
сообщение 22.03.2005 17:42
Сообщение #1


Гость






Пишу простейший код на кнопку:
Код

 ServerSocket1.Port := 1122;
 ServerSocket1.Active := true;

сразу ошибок не возникает, а вот если закрыть приложение, то ошибка: "Windows socket error: получен недопустимый аргумент (10022), on API 'closesocket'"
Помню что этих двух строк мало.. кто-нить напомнит, что ещё необходимо прописать для корректного запуска серверного сокета?
 К началу страницы 
+ Ответить 
hiv
сообщение 22.03.2005 18:03
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


У меня как-то такая хрень вылазила, так я ручками закрывал - вроде помогало...
Код
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ServerSocket1.Close;
ServerSocket1.Free;
end;


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Guest
сообщение 22.03.2005 18:29
Сообщение #3


Гость






Не , ошибка остается это не помогает...
 К началу страницы 
+ Ответить 
$ad!st
сообщение 22.03.2005 22:59
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 36
Пол: Мужской

Репутация: -  0  +


Код
ServerSocket1.Active := false;


может это поможет???
я ваще с сокетами работать неумею, так что я неуверен что это правильно


--------------------
когда в руках молоток, все кажутся гвоздями
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Guest
сообщение 23.03.2005 5:02
Сообщение #5


Гость






нет, это также не помогает. Причем вот этот код:
Код
ServerSocket1.Port := 1122;
ServerSocket1.Active := true;
ServerSocket1.Active := false;

вызывает ту же самую ошибку!! хотя он ведь вроде бы корректен!
 К началу страницы 
+ Ответить 
P@sh@
сообщение 23.03.2005 7:39
Сообщение #6


Бывалый
***

Группа: Пользователи
Сообщений: 180
Пол: Мужской

Репутация: -  2  +


вроде порта достаточно, по крайней мере у меня все нормально, только что специально создал новое приложение с одним компонентом ServerSocket...
вот инфа из хелпа, так что проверяй программу:
WSAEINVAL
(10022)
Invalid argument.
Some invalid argument was supplied (for example, specifying an invalid level to the setsockopt function). In some instances, it also refers to the current state of the socket - for instance, calling accept on a socket that is not listening.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Guest
сообщение 24.03.2005 0:40
Сообщение #7


Гость






P@sh@, в смысле проверяй программу? smile.gif это вся программа!
состоящая из одной кнопки и на ней код:

Код
ServerSocket1.Port := 1122;
ServerSocket1.Active := true;


а после закрытия приложения ошибка... и самое интересное другие порты также дают её, хотя помню ранее ни с чем подобным не сталкивался и все работало отлично...
 К началу страницы 
+ Ответить 
hiv
сообщение 24.03.2005 10:31
Сообщение #8


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Попробуй сервиспак 2-ой поставить, если у тебя Delphi6


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Guest
сообщение 24.03.2005 17:11
Сообщение #9


Гость






У меня Дельфи 7 и ВинХР без паков. В ближайшее время поставлю SP2 отпишу о результатах.
Кстати, но это если у меня экзэшник такой нерабочий, то и у остальных юзеров, не имеющих по видимому СП2 будут те же ошибки?

Скажите, а какое основное отличие при посылке сообщений через TUPDSocket, TTCPClient/TTCPSocket...
последние два случаем не смогут служить заменой TClientSocket/TServerSocket??
 К началу страницы 
+ Ответить 
P@sh@
сообщение 25.03.2005 6:24
Сообщение #10


Бывалый
***

Группа: Пользователи
Сообщений: 180
Пол: Мужской

Репутация: -  2  +


Скажите, а какое основное отличие при посылке сообщений через TUPDSocket, TTCPClient/TTCPSocket...
UDP просто отправляет пакеты, не заботясь о том, дошли ли они куда-нибудь, т.е. не поддерживает соединение... соответственно, сервер (udp в режиме listen) принимает любые udp-пакеты на заданный порт и должен сам отправить подтверждение, если надо...
TCP поддерживает связь автоматически, однако чем больше клиентов, тем мощнее нужен сервер, так как все активные соединения нужно держать в памяти (и в отдельном потоке, наверное).
последние два случаем не смогут служить заменой TClientSocket/TServerSocket??
имхо, одно и то же
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hiv
сообщение 25.03.2005 11:30
Сообщение #11


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Цитата
Кстати, но это если у меня экзэшник такой нерабочий, то и у остальных юзеров, не имеющих по видимому СП2 будут те же ошибки?

Если проблема в отсутствии СП у Windows, то и у остальных юзеров будут те же проблемы. Я точно знаю, что при Delphi7 + WinXP (без СП) существует ошибка: когда выполняешь ф-цию Format (форматирование строки для вывода), то выделяется память, которая освобождается только если выйти из программы. Я писал один сервис - он крутился 2 дня - потом умер, т.к. из-за этой ошибки все ОЗУ 512Мб было занято этим сервисом! Реализация ф-ции Format находится в системной DLL-ке. sad.gif


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
FrykT
сообщение 30.05.2005 11:35
Сообщение #12


Гость






Попробуй всю эту шнягу сунуть в
//try
//
//except end;

и можно еще ApplicationEvents сунуть, чтобы ошибки не вырывались наружу.
там где
onException, пишешь
// if false then
 К началу страницы 
+ Ответить 
Guest*
сообщение 9.06.2005 19:55
Сообщение #13


Гость






FrykT за исключения спасибо! но если ошибка произошла (не важно визуально это отобразилось или нет), то коннект все равно наладить уже не удасться, я правильно понимаю?
 К началу страницы 
+ Ответить 
hiv
сообщение 10.06.2005 11:17
Сообщение #14


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Да, это просто обработка свершившейся ошибки, а саму ошибку это не устраняет.


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 23.06.2025 7:10
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"