[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 240: Undefined array key 1
freepascal.ru форум 2005-11-25T17:55:15+03:00 https://freepascal.ru/forum/app.php/feed/topic/369 2005-11-25T17:55:15+03:00 2005-11-25T17:55:15+03:00 https://freepascal.ru/forum/viewtopic.php?p=3151#p3151 <![CDATA[Socket - не совсем спортировано]]>
Например в твоем примере это 192.168.10.3, клиент, запущенный, на той же машине по адресу 127.0.0.1 ничего не получит.

кажется, да
но у меня клиент всегда хотел 192.168.10.3

Статистика: Добавлено STAKANOV — 25.11.2005 17:55:15


]]>
2005-11-25T08:30:28+03:00 2005-11-25T08:30:28+03:00 https://freepascal.ru/forum/viewtopic.php?p=3145#p3145 <![CDATA[Socket - не совсем спортировано]]> Ты ведь знаешь, что клиент должен интересоваться сервером по адресу, к которуми сервер "забиндился". Например в твоем примере это 192.168.10.3, клиент, запущенный, на той же машине по адресу 127.0.0.1 ничего не получит.

..bw

Статистика: Добавлено Гость — 25.11.2005 08:30:28


]]>
2005-11-24T22:17:44+03:00 2005-11-24T22:17:44+03:00 https://freepascal.ru/forum/viewtopic.php?p=3142#p3142 <![CDATA[Socket - не совсем спортировано]]> т.е. получается все дело в Windows 98 ;)

Статистика: Добавлено STAKANOV — 24.11.2005 22:17:44


]]>
2005-11-24T15:38:44+03:00 2005-11-24T15:38:44+03:00 https://freepascal.ru/forum/viewtopic.php?p=3138#p3138 <![CDATA[Socket - не совсем спортировано]]> А сейчас плохо поню как там с сокетами работать, но, если не ошибаюсь, когда все потум, в твоем коде, должно отработать BeginThread(@ClientIn, @ClientSocket);? Я заменил этот код мессагой и мессага вылезла.

..bw

Статистика: Добавлено Гость — 24.11.2005 15:38:44


]]>
2005-11-24T14:05:54+03:00 2005-11-24T14:05:54+03:00 https://freepascal.ru/forum/viewtopic.php?p=3137#p3137 <![CDATA[Socket - не совсем спортировано]]>
У меня с "этим" проблем нет.

ты наверно невнимательно прочитал, функция accept из socket не корректно работает, как я понял баг пофиксили в 2.1.1

а ты именно модуль socket используешь или winsock ?

Статистика: Добавлено STAKANOV — 24.11.2005 14:05:54


]]>
2005-11-24T10:12:28+03:00 2005-11-24T10:12:28+03:00 https://freepascal.ru/forum/viewtopic.php?p=3131#p3131 <![CDATA[Socket - не совсем спортировано]]> Bind делаю к 0 (sAddr.Addr=0). Хотя работает и с конкретным адресом. Пробовал на 80 порту. Сервер реагирует и IE коннектится.
w2ksp4, fpc2.0.0[2005/05/08].

..bw

Статистика: Добавлено Гость — 24.11.2005 10:12:28


]]>
2005-10-22T05:51:47+03:00 2005-10-22T05:51:47+03:00 https://freepascal.ru/forum/viewtopic.php?p=2473#p2473 <![CDATA[Socket - не совсем спортировано]]>
SocketError значение 10014

А что это за ошибка?


WSAEFAULT (10014) Bad address.

Berkeley description: The system detected an invalid address in attempting to use an argument of a call.

WinSock description: Same as Berkeley, and then some. Specifically, v1.1 WinSock spec notes that this error occurs if the length of the buffer is too small. For instance, if the length of a struct sockaddr is not equivalent to the sizeof(struct sockaddr). However, it also occurs when an application passes an invalid pointer value.
<a href='http://www.sockets.com/err_lst1.htm' target='_blank'>источник</a>
Чудо, однако. Ибо ничего другого Sockets для Win32 и не делает - именно вызывает функции из WinSock.

Ага. Я заглядывал в исходники и тоже удивился. Может параметры не правильно передает. Возможно из-за того, что тип данных не правильно определяется.

Статистика: Добавлено STAKANOV — 22.10.2005 06:51:47


]]>
2005-10-21T23:27:36+03:00 2005-10-21T23:27:36+03:00 https://freepascal.ru/forum/viewtopic.php?p=2468#p2468 <![CDATA[Socket - не совсем спортировано]]>
А вот если вместо

Чудо, однако. Ибо ничего другого Sockets для Win32 и не делает - именно вызывает функции из WinSock.

Статистика: Добавлено Иван Шихалев — 22.10.2005 00:27:36


]]>
2005-10-21T23:24:00+03:00 2005-10-21T23:24:00+03:00 https://freepascal.ru/forum/viewtopic.php?p=2467#p2467 <![CDATA[Socket - не совсем спортировано]]>
SocketError значение 10014

А что это за ошибка?

Статистика: Добавлено Иван Шихалев — 22.10.2005 00:24:00


]]>
2005-10-21T20:42:30+03:00 2005-10-21T20:42:30+03:00 https://freepascal.ru/forum/viewtopic.php?p=2458#p2458 <![CDATA[Socket - не совсем спортировано]]>

Код:

ClientSocket:=Accept(MainSocket, sAddr, sAddrSize); 


использовать (с включением соответвующего модуля)

Код:

ClientSocket:=WinSock.Accept(MainSocket, @sAddr, @sAddrSize);


то все начинает работать B) это плохо

Статистика: Добавлено STAKANOV — 21.10.2005 21:42:30


]]>
2005-10-21T17:32:08+03:00 2005-10-21T17:32:08+03:00 https://freepascal.ru/forum/viewtopic.php?p=2454#p2454 <![CDATA[Socket - не совсем спортировано]]> windows 98 (fpc 2.0.0) получил третий результат - Accept в таком варианте возврашает -1, а в SocketError значение 10014. А на FreeBSD все по-прежнему хорошо работает :(

Для того, чтоб модуль sockets работал в виндовс так же хорошо как в бсд нужны какие-то специфические действия?

Статистика: Добавлено STAKANOV — 21.10.2005 18:32:08


]]>
2005-10-18T09:16:51+03:00 2005-10-18T09:16:51+03:00 https://freepascal.ru/forum/viewtopic.php?p=2403#p2403 <![CDATA[Socket - не совсем спортировано]]>
Иван Шихалев писал(а): Надо смотреть на предмет библиотек, дров и т.д.

:blink: вот тебе и кроссплатформенность :(

Статистика: Добавлено STAKANOV — 18.10.2005 10:16:51


]]>
2005-10-17T23:10:36+03:00 2005-10-17T23:10:36+03:00 https://freepascal.ru/forum/viewtopic.php?p=2397#p2397 <![CDATA[Socket - не совсем спортировано]]> Статистика: Добавлено Иван Шихалев — 18.10.2005 00:10:36


]]>
2005-10-17T12:09:47+03:00 2005-10-17T12:09:47+03:00 https://freepascal.ru/forum/viewtopic.php?p=2381#p2381 <![CDATA[Socket - не совсем спортировано]]>

Код:

 function ConnectionsManager(Data:pointer):Longint;
 var
  MainSocket,ClientSocket:Longint;
  sAddrSize:LongInt;
  sAddr:TINetSockAddr;
 begin
  ConnectionsManager:=0;
  SysMessage('Запускается менеджер соединений');
  MainSocket := Socket (AF_INET, SOCK_STREAM, 0);
  if MainSocket = -1 then
  begin
   SysMessage('Ошибка вызова socket');
   halt (1);
  end;
  
  sAddr.Family:=AF_INET;
  sAddr.Port:=htons(ServerPort);
  sAddr.Addr:=LongWord(StrToNetAddr('192.168.10.3'));
  
  if not Bind(MainSocket, sAddr, SizeOf(sAddr)) then
  begin
   SysMessage ('Ошибка вызова bind');
   halt (1);
  end;
   
  if not Listen(MainSocket,MaxConnections) then
  begin
   SysMessage ('Ошибка вызова listen');
   halt (1);
  end;
  
  repeat
   sAddrSize:=SizeOf(sAddr);
   SysMessage('Ожидаем соединение');
   ClientSocket:=Accept(MainSocket, sAddr, sAddrSize); [b]<=== ДО СЮДА ДОХОДИТ И ВСЕ, А КЛИЕНТ ВЕДЕТ СЕБЯ ТАК КАК БУДТО СЕРВЕР ВООБЩЕ НЕ ЗАПУЩЕН[/b]
   if ClientSocket<>-1 then
   begin
    BeginThread(@ClientIn,@ClientSocket);
   end;
  until False;
  // здесь надо вставить ожидание завершения дочерних процессов
  Shutdown(MainSocket,2);
  SysMessage('Менеджер соединений завершил свою работу');
 end;

Статистика: Добавлено STAKANOV — 17.10.2005 13:09:47


]]>
2005-10-16T12:19:36+03:00 2005-10-16T12:19:36+03:00 https://freepascal.ru/forum/viewtopic.php?p=2354#p2354 <![CDATA[Socket - не совсем спортировано]]>
Надо заметить, что кроссплатформенность FPC очень далека от совершенства. <_<

Статистика: Добавлено STAKANOV — 16.10.2005 13:19:36


]]>