| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Подскажите пожалуйста принцип работы написания |
| Автор: Zmeyka 2.5.2006, 19:57 |
| Не знаю как правильно будет сказать, но может быть подскажете принцип организации серверного сокета? Уже неделю мучаюсь никак не запустить сокет на прослушивание... До чего дошел... не знаю правильно или нет, но всеже... 1) Инициализация WSAStartUp.. 2) Создаю сокет (Socket1:TSocket SockAddr:TSockAddr;) Socket1:=Socket(Internet,Stream,0); FillChar(SockAddr,SizeOf(SockAddr),0); SockAddr.Sin_Family:=Internet; SockAddr.Sin_Port:=Htons(80); 3) Вроде как прослушиваю сокет (точнее пытаюсь) (Pr,Pr1:Integer) Pr:=Bind(Socket1,SockAddr,SizeOf(SockAddr)); Pr1:=Listen(Socket1,1); До этого момента по крайней мере ошибок не выдает... 4) Далее как я понял надо использовать функцию Accept И пробую это делать: Pr3:=Accept(Server,Nil,nil); Вот с фуекцией Accept Самые непонятки... как я понял из примеров, второй параметр функции Accept это переменная Record типа TSockAddr и там должны отображаться данные клиента если есть соединение..., но сколько не бился, так и не смог задать эту переменную... дельфя все рукагется о несоответствии типов. Может кто подскажет убогому, правильную последовательность действий при создании серверного сокета и в какие функции и какие даные передавать? Кроме всего прочего никак не пойму: Каким образом сокет постоянно висит на прослушивании? Он же 1 раз запускается и вырубается через какое то время? Пробовал зацикливать, но тогды приложение виснет черзе некоторое время... |
| Автор: Zmeyka 3.5.2006, 18:43 |
| не понял... можно еще раз? WSAStartUp($101,WSAData)=0; Socket1:=Socket(2,1,0); SockAddr.Sin_Family:=2; SockAddr.Sin_Port:=80; Pr1:=Bind(Socket1,SockAddr,SizeOf(SockAddr)); Pr2:=Listen(Socket1,1); >>1. запускаешь листен, и ты должен как то среагировать на само >>подключение , если оно произошло только тогда вызывать нужно >>Accept. Дык никакого подключения-то не происходит... Bind и Listen всегда выдают -1, пробую зациклить эти Bind и Listen и приложение виснет. Или с Локалхоста оно не подконектиться к этому сокету? |
| Автор: Zmeyka 3.5.2006, 22:04 |
| Мде... не знаю почему но заработало.... по крайней мере коннект появился... извиняюсь за беспокойство. Сенк за помощь. |
| Автор: Romikgy 3.5.2006, 23:17 | ||
Пжалста |