Форум: "Сети";
Текущий архив: 2003.12.04;
Скачать: [xml.tar.bz2];
ВнизПроблема с TServerSocket Найти похожие ветки
← →
Igorek (2003-10-03 11:45) [0]Только начинаю изучать эту тему, потому и глупый наверно вопрос.
Наваял сервер.
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 12:10) [1]
procedure TForm1.ServerSocket1ClientWrite(Sender: TObject;
Socket: TCustomWinSocket);
begin
Socket.SendЧегоТо(....); // !!!!!!!!!!!
end;
← →
Igorek (2003-10-03 12:27) [2]2 Digitman
Причина ошибки не в том.
Пусть будет:
procedure TForm1.ServerSocket1ClientWrite(Sender: TObject;
Socket: TCustomWinSocket);
begin
Socket.SendText("asdasda");
end;
Ошибка присутствувет. А что за код 11004? МСДН нету под руками.
← →
Digitman (2003-10-03 12:49) [3]
> Причина ошибки не в том
это понятно
приведенный код не имеет к этому отношения
> Ошибка присутствувет
какая ? вышеупомянутое исключение ?
ищи его источник с пом. меню "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 13:16) [4]Active := not Active;
← →
Digitman (2003-10-03 13:35) [5]для начала очисть св-во Service
← →
Igorek (2003-10-03 16:47) [6]Хе. Убрал компонент, поставил снова, выставил свойства и все пошло. Странно однако...
> Digitman © (03.10.03 13:35) [5]
> для начала очисть св-во Service
Зачем, пусть будет напр. "http"
← →
Digitman (2003-10-03 16:55) [7]угу ...
пусть будет)
тогда либо сервер у тебя должен "слушать" на 80-м порту, а не на 20000-м, либо строка соответствующая в файле Services должна указывать, что http-сервис по твоему необоснованному капризу отныне стал "жить" на 20000-м порту)
← →
Digitman (2003-10-03 17:00) [8]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"
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2003.12.04;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c