![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Помогите реализовать 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
|
||||
|
||||
|
пример многопользовательского сервера на сокетах был в одном из последних журналов хакер, в статье про проксю. если откопаю диск, то выложу
![]() |