ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #581  
Старый 04.09.2007, 18:32
z01b
Постоянный
Регистрация: 05.01.2007
Сообщений: 508
Провел на форуме:
2360904

Репутация: 1393


По умолчанию

Цитата:
Сообщение от infernal-team  
Exile1985 это вообще что такое? with IdSMTP1 do
Без обид, но порвало )
Учебник, тебе не помешал бы )

Последний раз редактировалось z01b; 04.09.2007 в 18:48..
 
Ответить с цитированием

  #582  
Старый 05.09.2007, 22:04
alamat
Познающий
Регистрация: 06.08.2007
Сообщений: 36
Провел на форуме:
373639

Репутация: 10
По умолчанию

Здравствуйте! Небольшая(а может очень большая) проблема, мне надо подключаться через Proxy сервер к smtp серверу при помощи компанента idsmtp. Подскажите как я могу это сделать?
 
Ответить с цитированием

  #583  
Старый 06.09.2007, 19:25
5p4x2kn3t
Новичок
Регистрация: 06.09.2007
Сообщений: 8
Провел на форуме:
10073

Репутация: 0
По умолчанию

Пытаюсь в своей программе получить HTML-код Web-страницы с помощью WinSock API, но программа элементарно виснет (если есть связь с Интернетом) я неправильно пользуюсь сокетами или HTTP-протоколом?

P.S. Antichat почему-то на месте многих пробелов ставит *

Код:
procedure Get;
  var
   k : integer;
  * Servername  : string;

* * FSocket* * : integer;
* * HostEnt* * : PHostEnt;
* * SockAddrIn : TSockAddrIn;
* * dSize* * * : dword;
* * Str* * * * : array [0..255] of Char;
* * WSAData* * : TWSAData;
begin

//...
* WSAStartup(257, WSAData);* 
* * if Pos('http://', fUrl) = 0 then
* * * fUrl* *:= 'http://' + fUrl;

* Servername := AnsiReplaceStr(fUrl, 'http://', '');

* * FOR k := 1 TO length(Servername) DO
* * * if Servername[k] = '/' then
* * * * begin
* * * * * Servername := copy(Servername, 1, k - 1);
* * * * * break;
* * * * end;

* FSocket* * * * * * * * * * := socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
* SockAddrIn.sin_family* * * := AF_INET;
* SockAddrIn.sin_port* * * * := htons(80);
* SockAddrIn.sin_addr.s_addr := inet_addr(PAnsiChar(Servername));
* * if SockAddrIn.sin_addr.s_addr = INADDR_NONE then
* * * begin
* * * * HostEnt := gethostbyname(PAnsiChar(Servername));
* * * * * if HostEnt = nil then
* * * * * * begin
* * * * * * * closesocket(FSocket);
* * * * * * * Exit;
* * * * * * end;
* * * * SockAddrIn.sin_addr.s_addr := PLongint(HostEnt^.h_addr_list^)^;
* * * end;
* * if Connect(FSocket, SockAddrIn, SizeOf(SockAddrIn)) <> -1 then
* * * begin
* * * * lstrcpy(Str, PAnsiChar('GET ' + url + ' HTTP/1.1' + #13#10#0));
* * * * Str := '';
* * * * send(FSocket, Str, lstrlen(Str), 0);
* * * * * repeat
* * * * * * dSize := recv(FSocket, Str, 255, 0);
* * * * * * Code.AddString(Str);
//Code - аналог TStringList
* * * * * until
* * * * * * (dSize = 0) or (dSize = SOCKET_ERROR);
* * * * closesocket(FSocket);
* * * end;
* WSACleanup();
//...
end;
 
Ответить с цитированием

  #584  
Старый 07.09.2007, 13:00
NetMan
Участник форума
Регистрация: 09.02.2004
Сообщений: 122
Провел на форуме:
1089794

Репутация: 134
Exclamation

5p4x2kn3t > попробуй продебажить =)
Заметил только что здесь:
Код:
lstrcpy(Str, PAnsiChar('GET ' + url + ' HTTP/1.1' + #13#10#0));
не совсем правильно...
Надо:
Код:
lstrcpy(Str, PAnsiChar('GET ' + url + ' HTTP/1.1' + #13#10#13#10));

Последний раз редактировалось NetMan; 07.09.2007 в 13:02..
 
Ответить с цитированием

  #585  
Старый 07.09.2007, 17:44
5p4x2kn3t
Новичок
Регистрация: 06.09.2007
Сообщений: 8
Провел на форуме:
10073

Репутация: 0
По умолчанию

Цитата:
Сообщение от NetMan  
5p4x2kn3t > попробуй продебажить =)
Заметил только что здесь:
Код:
lstrcpy(Str, PAnsiChar('GET ' + url + ' HTTP/1.1' + #13#10#0));
не совсем правильно...
Надо:
Код:
lstrcpy(Str, PAnsiChar('GET ' + url + ' HTTP/1.1' + #13#10#13#10));
Все равно не помогает.

Да, у меня в программе много потоков(TThread), использующих сокеты, инициализацию WSA нужно делать только в главной части
(еще перед созданием первого потока - каждый поток порождает новые) или в каждом?

Насчет запуска в debug-режиме - последняя остановка - на recv, дальше поток виснет, причем непонятно где, кажется в цикле repeat, но хз...

Последний раз редактировалось 5p4x2kn3t; 07.09.2007 в 17:48..
 
Ответить с цитированием

  #586  
Старый 07.09.2007, 18:38
inv
Banned
Регистрация: 03.08.2007
Сообщений: 313
Провел на форуме:
951141

Репутация: 291
По умолчанию

Host:....

Цитата:
* * * * Str := '';
???
 
Ответить с цитированием

  #587  
Старый 07.09.2007, 18:53
GlOFF
Постоянный
Регистрация: 08.05.2006
Сообщений: 816
Провел на форуме:
1845671

Репутация: 1338


По умолчанию

inv Дествительно жестоко
Цитата:
* * * * lstrcpy(Str, PAnsiChar('GET ' + url + ' HTTP/1.1' + #13#10#0));
* * * * Str := '';
* * * * send(FSocket, Str, lstrlen(Str), 0);
Получить строку, обнулить и послать!
 
Ответить с цитированием

  #588  
Старый 07.09.2007, 21:26
5p4x2kn3t
Новичок
Регистрация: 06.09.2007
Сообщений: 8
Провел на форуме:
10073

Репутация: 0
По умолчанию

Бли-и-и-и-ин =)) как это туда попало??!!)))) Спасибо.

Последний раз редактировалось 5p4x2kn3t; 07.09.2007 в 21:28..
 
Ответить с цитированием

  #589  
Старый 09.09.2007, 08:53
zl0y
Banned
Регистрация: 13.09.2006
Сообщений: 523
Провел на форуме:
2869410

Репутация: 925


Отправить сообщение для zl0y с помощью ICQ
По умолчанию

Это кто знает как зделать на винапи в ListView,чтобы новые записи при добавлении добавлялись сверху вниз ? Или Снизу вверх?
 
Ответить с цитированием

  #590  
Старый 09.09.2007, 16:53
W!z@rD
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме:
1892597

Репутация: 836


Отправить сообщение для W!z@rD с помощью ICQ
По умолчанию

PHP код:
//Определение колличества пунктов в ListBox
function ListBox_GetItemCount(hListBoxHWND): Integer;
begin
 Result 
:= SendMessage(hListBoxLB_GETCOUNT00);
end;

//Удаление определенного пункта в ListBox
procedure ListBox_DeleteItem(hListBoxHWNDIndexInteger);
begin
 SendMessage
(hListBoxLB_DELETESTRINGIndex0);
end;

//Удаление всех пунктов в ListBox
procedure ListBox_ClearItems(hListBoxHWND);
begin
 SendMessage
(hListBoxLB_RESETCONTENT00);
end;

//Добавление пункта в ListBox
procedure ListBox_AddItem(hListBoxHWNDNewItemString);
begin
 SendMessage
(hListBoxLB_ADDSTRING0Integer(NewItem));
end;

//Добавление пункта в определенное место в ListBox
procedure ListBox_InsertItem(hListBoxHWNDIndexIntegerNewItemString);
begin
 SendMessage
(hListBoxLB_INSERTSTRINGIndexInteger(NewItem));
end;

//Определение имени выделеного пункта в ListBox
function ListBox_GetSelectedItem(hListBoxHWND): string;
var
 
IndexlenInteger;
 
sstring;
 
bufferPChar;
begin
 Index 
:= SendMessage(hListBoxLB_GETCURSEL00);
 
len := SendMessage(hListBoxLB_GETTEXTLENwParam(Index), 0);
 
GetMem(bufferlen 1);
 
SendMessage(hListBoxLB_GETTEXTwParam(Index), lParam(buffer));
 
SetString(sbufferlen);
 
FreeMem(buffer);
 
Result := s;
end;

//Определение номера выделеного пункта в ListBox
function ListBox_GetCountSelectedItem(hListBoxHWND): Integer;
var
 
IndexlenInteger;
 
sstring;
 
bufferPChar;
begin
 Index 
:= SendMessage(hListBoxLB_GETCURSEL00);
 
len := SendMessage(hListBoxLB_GETTEXTLENwParam(Index), 0);
 
GetMem(bufferlen 1);
 
SendMessage(hListBoxLB_GETTEXTwParam(Index), lParam(buffer));
 
SetString(sbufferlen);
 
FreeMem(buffer);
 
Result := Index;
end;

//Определение имени пункта по номеру в ListBox
function ListBox_GetItem(hListBoxHWNDLbItemInteger): string;
var
 
lInteger;
 
bufferPChar;
begin
 l 
:= SendMessage(hListBoxLB_GETTEXTLENLbItem0);
 
GetMem(buffer1);
 
SendMessage(hListBoxLB_GETTEXTLbItemInteger(buffer));
 
Result := StrPas(buffer);
 
FreeMem(buffer);
end;

//Выделение всех пунктов в ListBox
procedure ListBox_SelAllItems(hListBoxHWND);
var
 
CountItemsiInteger;
begin
 CountItems 
:= SendMessage(hListBoxLB_GETCOUNT00);
  if 
CountItems 0 then exit;
  for 
:= 0 to CountItems do
   
SendMessage(hListBoxLB_SETSELInteger(true), i);
end;

//Выбор пункта
procedure ListBox_SelectedItem(hListBoxHWNDIndexInteger);
begin
 SendMessage
(hListBoxLB_SETCURSELIndex0);
end
(c) Lenin_Inc
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Wi-Fi, BT] Задай вопрос - получи ответ! Alexsize Беспроводные технологии/WPAN/WLAN 2564 06.04.2026 23:31
[ *NIX ] Задай вопрос - получи ответ. Xszz *nix 1547 15.06.2010 15:41
[jQuery] - Задай вопрос, получи ответ Isis PHP, PERL, MySQL, JavaScript 62 25.12.2009 03:25
ЕсТь ВоПрос Guma Чаты 4 26.10.2005 21:48



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ