|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
TCP-server (консольный)
Помогите реализовать TCP-server в виде консольного приложения.
|
#2
|
|||
|
|||
Цитата:
Winsock тебе в руки . . . При желании это дело можно красиво сделать, т.е. с выводом на экран всех ошибок и т. д. А в чём именно проблема? |
#3
|
|||
|
|||
А проблема в том, что с winsock'ом я работал мало, а с консольными приложениями вообще не работал... если можешь кинь исходник.
|
#4
|
|||
|
|||
Боюсь с иходниками напряжёнка, а по winsock у Флёнова есть на эту тему замечательное издание "Delphi глазами хакера", д и вобще в сети много всякой инфы относительно этого вопроса.
|
#5
|
|||
|
|||
Попробую описать проблему конкретнее:
Вообщем мне не понятно как зациклить консольное приложение так, чтобы оно все время прослушивало socket и при этом не расходывало лишних ресурсов. |
#6
|
|||
|
|||
Вроде разобрался, еще вопрос: Как сделать чтобы ввод с клавиатуры в консольное приложение происходил в нижней строке консоля, а при этом все write'ы сервера отображались бы как обычно (сверху вниз)?
|
#7
|
||||
|
||||
Цитата:
Цитата:
2OverFly: раз проверил, то мог бы и помочь человеку, а не трепаться попусту. 2SirToxa: Код:
program consoleserver; {$APPTYPE CONSOLE} uses Windows,SysUtils,CrtSock; const portN=4020; var a: String; i,sas: integer; Restart: boolean; label Cycle; label Quit; procedure Sendex(Buf: String); begin CrtSock.Send(sas,Pointer(Buf),Length(Buf),0); end; Function Readex: String; var Buf: array [0..1024] of char; begin FillChar(Buf,1025,0); CrtSock.Recv(Sas,Buf,1024,0); Result:=Buf; end; begin Restart:=False; i:=CrtSock.StartServer(portN); sas:=0; while True do begin Sleep(200); SAS:=CrtSock.SockAvail(i); if sas<0 then sas:=CrtSock.WaitClient(i); if sas>0 then begin Cycle: Sleep(200); a:=''; a:=Readex; WriteLn(a); if a='quit' then goto quit; goto Cycle; end; end; Quit: end. В.Бендер |
#8
|
|||
|
|||
Вот исходники нашёл, правда сервер кривой, но консольный, ни чего, думаю, разберёшься. . .
|
#9
|
|||
|
|||
Спасибо.
Еще вопрос: Как сделать многопользовательский сервер на winsock? Никак не могу разобраться... сделал примерно так: сервер слушает порт, аксептит соединение (уже проблема, ибо ждет соединения до победного конца...), запоминает сокет клиента в массив и все по новой... Может организовать recv в отдельном потоке? Тогда опять же ворос как определить с какого из клиентских сокетов ждать данных? |
#10
|
||||
|
||||
пример многопользовательского сервера на сокетах был в одном из последних журналов хакер, в статье про проксю. если откопаю диск, то выложу
В.Бендер |