| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Сеть на низком уровне в Delphi |
| Автор: Felt 14.6.2004, 23:12 |
| Два дня уже бьюсь над проблемой. Horrific писал как работать с сокетами на низком уровне, но конкретных примеров чего то я так и не могу найти. Я пишу такой вот код: program Project1; uses Windows, WinSock2; var Msg: TMsg; Info: TWSAData; Handle: Cardinal; Name: TSockAddr; S: String; begin WSAStartup(MakeWord(2, 0), Info); Name.sin_port:=htons(1540); Handle:=Socket(AF_INET, SOCK_STREAM, IPPORT_ECHO); Connect(Handle, @Name, SizeOf(Name)); Listen(Handle, SOMAXCONN); while GetMessage(Msg, 0, 0, 0) do begin Recv(Handle, S, Length(s), MSG_OOB); TranslateMessage(Msg); DispatchMessage(Msg); end; end. Здесь я собрал практически все описанные челом функции, но так и не смог открыть порт и ждать данные, приходящие от клиента. А суть проги такая. Сервер, написанный с помощью API ждет прихода строки 'HelloWorld' от клиента, который написан с использованием компонента ClientSocket. Как это сделать? P. S. Количество соединений к серверу будет не более 1. |
| Автор: stab 15.6.2004, 21:26 | ||||||
Пара коментариев. 1. Сервер настроен на порт 80 (http), т.е. запустив программу и введя в IE 127.0.0.1 мы должны увидеть сообщение следующего содержания:
2. Сервер работает в так называемом блокирующем режиме (blocking mode), это значит, что на строчке
3. Если требуется серьезно разобраться в сокетах, то рекомендую купить книжку или найти чего-нить в инете, т.к. библиотека сокетов довольно обширна и временами без ста грамм в хитрых функциях не разобраться. Там же можно подчерпнуть знания о неблокирующих соеденениях (non-blocking, asynchronous connections). Самый трудный, но и самый полезный путь -- покапаться в исходниках TClientSocket, TServerSocket, т.д. (ScktComp.pas) |