Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с TServerSocket [D6, Win95/98]


Igorek ©   (2003-10-03 11:45:00) 

Только начинаю изучать эту тему, потому и глупый наверно вопрос.
Наваял сервер.

procedure TForm1.Button1Click(Sender: TObject);
begin
with ServerSocket1 do
begin
Active := not Active;
if Active then
Button1.Caption := "Set server not active"
else
Button1.Caption := "Set server active";
end;
Memo1.Lines.Clear;
Memo2.Lines.Clear;
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.Lines.Add(Socket.ReceiveText);
end;

procedure TForm1.ServerSocket1ClientWrite(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo2.Lines.Add(Socket.ReceiveText);
end;


При активации выдает:
---------------------------
Debugger Exception Notification
---------------------------
Project SampleServer.exe raised exception class ESocketError with message "Windows socket error: (11004), on API "ASync Lookup"". Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------

Причем ServerType = stNonBlocking

Самое интересное, что пару раз запустилось нормально а теперь - ексепшн. Что такое?


Digitman   (2003-10-03 17:00:00) [1]

Specifies the name of the service for which the socket connection is used.

property Service: string;

Description

Use Service to identify the use of the connection. Windows provides a number of standard service names such as ftp, http, finger, and time. Servers can specify additional services and their associated ports in a SERVICES file. For more information, see the Microsoft documentation for Windows sockets.

Certain port numbers are reserved for specific values of service. Thus, Service provides a more meaningful way to specify the server Port to use for the socket connection. For server sockets, using Service rather than Port ensures that the server will listen for TCP/IP requests on the appropriate port.

так что серверу-клиенту твоим глубо начхать на св-во Port, они его возьмут из файла Services, коль скоро ты указала там "http"


Digitman   (2003-10-03 16:55:00) [2]

угу ...
пусть будет)
тогда либо сервер у тебя должен "слушать" на 80-м порту, а не на 20000-м, либо строка соответствующая в файле Services должна указывать, что http-сервис по твоему необоснованному капризу отныне стал "жить" на 20000-м порту)


Igorek   (2003-10-03 16:47:00) [3]

Хе. Убрал компонент, поставил снова, выставил свойства и все пошло. Странно однако...

> Digitman © (03.10.03 13:35) [5]
> для начала очисть св-во Service

Зачем, пусть будет напр. "http"


Digitman   (2003-10-03 13:35:00) [4]

для начала очисть св-во Service


Igorek   (2003-10-03 13:16:00) [5]

Active := not Active;


Digitman   (2003-10-03 12:49:00) [6]


> Причина ошибки не в том


это понятно
приведенный код не имеет к этому отношения


> Ошибка присутствувет


какая ? вышеупомянутое исключение ?
ищи его источник с пом. меню "Search | Find Error ..."


> что за код 11004? МСДН нету под руками


зато есть хэлп sock2.hlp и модуль winsock.pas

WSABASEERR = 10000;
{ Valid name, no data record of requested type }
WSANO_DATA = (WSABASEERR+1004);

укажи строчку, при выполнении которой возникает ошибка 11004


Igorek   (2003-10-03 12:27:00) [7]

2 Digitman

Причина ошибки не в том.
Пусть будет:

procedure TForm1.ServerSocket1ClientWrite(Sender: TObject;
Socket: TCustomWinSocket);
begin
Socket.SendText("asdasda");
end;

Ошибка присутствувет. А что за код 11004? МСДН нету под руками.


Digitman   (2003-10-03 12:10:00) [8]


procedure TForm1.ServerSocket1ClientWrite(Sender: TObject;
Socket: TCustomWinSocket);
begin
Socket.SendЧегоТо(....); // !!!!!!!!!!!
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо