Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.02.2008, 00:12
SirToxa SirToxa вне форума
Прохожий
 
Регистрация: 25.02.2008
Сообщения: 5
Репутация: 10
По умолчанию TCP-server (консольный)

Помогите реализовать TCP-server в виде консольного приложения.
Ответить с цитированием
  #2  
Старый 25.02.2008, 14:43
OverFly OverFly вне форума
Прохожий
 
Регистрация: 16.12.2007
Сообщения: 24
Репутация: 10
По умолчанию

Цитата:
Сообщение от SirToxa
Помогите реализовать TCP-server в виде консольного приложения.
Проверил, всё также работает.
Winsock тебе в руки . . . При желании это дело можно красиво сделать, т.е. с выводом на экран всех ошибок и т. д.
А в чём именно проблема?
Ответить с цитированием
  #3  
Старый 25.02.2008, 18:14
SirToxa SirToxa вне форума
Прохожий
 
Регистрация: 25.02.2008
Сообщения: 5
Репутация: 10
По умолчанию

А проблема в том, что с winsock'ом я работал мало, а с консольными приложениями вообще не работал... если можешь кинь исходник.
Ответить с цитированием
  #4  
Старый 25.02.2008, 23:14
OverFly OverFly вне форума
Прохожий
 
Регистрация: 16.12.2007
Сообщения: 24
Репутация: 10
По умолчанию

Боюсь с иходниками напряжёнка, а по winsock у Флёнова есть на эту тему замечательное издание "Delphi глазами хакера", д и вобще в сети много всякой инфы относительно этого вопроса.
Ответить с цитированием
  #5  
Старый 25.02.2008, 23:33
SirToxa SirToxa вне форума
Прохожий
 
Регистрация: 25.02.2008
Сообщения: 5
Репутация: 10
По умолчанию

Попробую описать проблему конкретнее:
Вообщем мне не понятно как зациклить консольное приложение так, чтобы оно все время прослушивало socket и при этом не расходывало лишних ресурсов.
Ответить с цитированием
  #6  
Старый 26.02.2008, 14:47
SirToxa SirToxa вне форума
Прохожий
 
Регистрация: 25.02.2008
Сообщения: 5
Репутация: 10
По умолчанию

Вроде разобрался, еще вопрос: Как сделать чтобы ввод с клавиатуры в консольное приложение происходил в нижней строке консоля, а при этом все write'ы сервера отображались бы как обычно (сверху вниз)?
Ответить с цитированием
  #7  
Старый 26.02.2008, 15:19
Аватар для SPYtm
SPYtm SPYtm вне форума
Прохожий
 
Регистрация: 25.12.2007
Адрес: Екатеринбург
Сообщения: 18
Репутация: 10
По умолчанию

Цитата:
Проверил, всё также работает.

Цитата:
Боюсь с иходниками напряжёнка

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  
Старый 26.02.2008, 15:32
OverFly OverFly вне форума
Прохожий
 
Регистрация: 16.12.2007
Сообщения: 24
Репутация: 10
По умолчанию

Вот исходники нашёл, правда сервер кривой, но консольный, ни чего, думаю, разберёшься. . .
Вложения
Тип файла: zip C$S.zip (30.4 Кбайт, 65 просмотров)
Ответить с цитированием
  #9  
Старый 02.03.2008, 10:36
SirToxa SirToxa вне форума
Прохожий
 
Регистрация: 25.02.2008
Сообщения: 5
Репутация: 10
По умолчанию

Спасибо.
Еще вопрос: Как сделать многопользовательский сервер на winsock? Никак не могу разобраться... сделал примерно так: сервер слушает порт, аксептит соединение (уже проблема, ибо ждет соединения до победного конца...), запоминает сокет клиента в массив и все по новой... Может организовать recv в отдельном потоке? Тогда опять же ворос как определить с какого из клиентских сокетов ждать данных?
Ответить с цитированием
  #10  
Старый 04.03.2008, 21:34
Аватар для SPYtm
SPYtm SPYtm вне форума
Прохожий
 
Регистрация: 25.12.2007
Адрес: Екатеринбург
Сообщения: 18
Репутация: 10
По умолчанию

пример многопользовательского сервера на сокетах был в одном из последних журналов хакер, в статье про проксю. если откопаю диск, то выложу
__________________
В.Бендер
Ответить с цитированием
  #11  
Старый 04.03.2008, 21:41
Аватар для SPYtm
SPYtm SPYtm вне форума
Прохожий
 
Регистрация: 25.12.2007
Адрес: Екатеринбург
Сообщения: 18
Репутация: 10
По умолчанию

Вот, разбирайся...

proxy.zip
__________________
В.Бендер
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:23.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter