Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2006.07.16;
Скачать: [xml.tar.bz2];

Вниз

Сокеты без окон   Найти похожие ветки 

 
Aven   (2006-03-02 22:55) [0]

Как можно использовать сокеты без создания окна? т.е. нужно принимать события сокетов в консольной проге.. а создавать окно очень не хочется.Знаю это возможно, но мож кто-то знает как?


 
Rouse_ ©   (2006-03-03 00:40) [1]

select


 
Aven   (2006-03-03 01:28) [2]

А кусок кода можно? По хелпу ничего не понял :(


 
ZzzzZ   (2006-03-03 07:13) [3]

Эвенты юзай, хорошаю штука, простая.
Иди на мсдн, там все прояснится.


 
Сергей М. ©   (2006-03-03 11:01) [4]


> создавать окно очень не хочется


В смысле лень создавать его "ручками" ? Или по каким-то другим причинам ?


 
Slym ©   (2006-03-03 14:53) [5]

TServerSocket + ThreadBlocking


 
Aven   (2006-03-03 16:43) [6]

Сергей М. программа консольная, не каких окон там не должно быть по причине запуска оной через wine под linux в консоли.

Slym что-то я сомневаюсь что это без окон....


 
umbra ©   (2006-03-03 17:16) [7]

а разве wine не поддерживает окон?


 
XProger ©   (2006-03-03 17:52) [8]

http://xproger.mirgames.ru/?id=2&page=1#XiRC
Консольное приложение, работа с TCP сокетом реализована в отдельном потоке.


 
Aven   (2006-03-03 23:15) [9]

umbra из консоли запустится только консольное :) Если создается окно, то ошибка :) Из графич. оболочки, запишется.

XProger пасиб, прикольный сайт, много интересного нашел... вот только там TCP клиент, а не сервер... :(


 
Delphi_is_cool ©   (2006-03-04 12:11) [10]

Кусочек кода из одной моей программы:

program Project2;

{$APPTYPE CONSOLE}

uses
 Windows, WinSock, SysUtils;

function WaitForRead(Socket: TSocket; const Timeout: Word = 500) : Boolean;
var
 TV: TTimeVal;
 FSet: TFDSet;
begin
 ZeroMemory(@FSet, SizeOf(TFDSet));
 FD_SET(Socket, FSet);
 TV.tv_sec := 0;
 TV.tv_usec := Timeout;
 Result := Select(0, @FSet, nil, nil, @TV) = 1;
end;

function RecvLength(Socket: TSocket) : LongInt;
begin
 IoCtlSocket(Socket, FIONREAD, Result);
end;

procedure ThreadProc(Socket: TSocket); stdcall;
begin
 while True do
   if WaitForRead(Socket) then
     if RecvLength(Socket) = 0 then
        CloseSocket(Socket) // Клиент отключился
     else begin
       // Пришли какието данные
     end;
end;

function CreateServer : TSocket;
var
 addr: sockaddr_in;
 ServerReady: Boolean;
begin
 Result := Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
 if Result <> INVALID_SOCKET then
 begin
   ZeroMemory(@addr, SizeOf(sockaddr_in));
   with addr do
   begin
     sin_family      := AF_INET;
     sin_port        := htons(12345);
     sin_addr.S_addr := INADDR_ANY;
   end;

   ServerReady := (Bind(Result, addr, SizeOf(sockaddr_in)) <> SOCKET_ERROR) and (Listen(Result, SOMAXCONN) <> SOCKET_ERROR);
   if not ServerReady then
   begin
     CloseSocket(Result);
     Result := INVALID_SOCKET;
   end;
 end;
end;

var
 C: Cardinal;
 WSAData: TWSAData;
 ServerSocket: TSocket;
begin
 if WSAStartup($0101, WSAData) = 0 then
 begin
   ServerSocket := CreateServer;
   if ServerSocket <> INVALID_SOCKET then
   begin
     while True do
       CloseHandle(CreateThread(nil, 0, @ThreadProc, Pointer(Accept(ServerSocket, nil, nil)), 0, C));

     CloseSocket(ServerSocket);
   end;
   WSACleanup;
 end;
end.

Надёсь поможет :)


 
Сергей М. ©   (2006-03-06 08:12) [11]


> не каких окон там не должно быть по причине запуска оной
> через wine под linux в консоли


С каких пор wine перестал эмулировать оконные ф-ции win32 ?


 
umbra ©   (2006-03-06 10:20) [12]

если окна недопустимы, то используйте блокирующие сокеты - Indy. Помещайте компоненты в DataModule (это не окно) и делайте все, что Вам нужно.


 
злыдень   (2006-03-08 17:30) [13]

<offtop>
XProger ©   (03.03.06 17:52) [8]
ты в RFC по IRC-протоколу + в доки по mIRC заглядывать не пробовал? #31 не ХЗ, а Underline =) и еще много спорных моментов :)
</offtop>



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2006.07.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
6-1141725532
vcat
2006-03-07 12:58
2006.07.16
Компонента


9-1131821987
Кефир87
2005-11-12 21:59
2006.07.16
gluProject вызывает Run time error?!


15-1150324765
DevilDevil
2006-06-15 02:39
2006.07.16
Путёвые Иконки и Глифы


2-1151399925
userrrrrrrr
2006-06-27 13:18
2006.07.16
WinExec


8-1137709538
Nailspb
2006-01-20 01:25
2006.07.16
Drag &amp; Drop





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский