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

Вниз

Класс TTHread - как ?   Найти похожие ветки 

 
Unknown__   (2003-08-20 18:19) [0]


unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, WinSock, ExtCtrls, StdCtrls;
const
OffHOST = 1;
OnHOST = 0;
type
TForm1 = class(TForm)
TextBox1: TMemo;
TextBox2: TMemo;
TextBox3: TMemo;
ButtonConnect: TButton;
ButtonHost: TButton;
ButtonDisconnect: TButton;
Button4: TButton;
Panel1: TPanel;
StatusBox: TMemo;
procedure ButtonConnectClick(Sender: TObject);
procedure ButtonHostClick(Sender: TObject);
procedure ButtonDisconnectClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

type
TMyThread = class(TThread)
private
{ Private declarations }
HeadSock : TSocket;
Stat : integer;
protected
procedure Execute; override;
procedure CreateSocket(var HeadSock: TSocket; Stat: integer);
procedure Disconnect(HeadSock: TSocket);
end;

var
Form1: TForm1;
implementation

{$R *.dfm}
var
hreadClass : TMyThread;
procedure TMyThread.Execute;
begin
hreadClass.CreateSocket(HeadSock,Stat);
end;
procedure TMyThread.CreateSocket(var HeadSock: TSocket; Stat: integer);
var
wData : WSAData;
Error : INTEGER;
host : TSockAddr;
sizeHost : integer;
lSock : TSocket;
begin
Error := WSAStartup($0101,wData);
if Error <> 0 then
begin
Error := WSAGetLastError();
case Error of
10091: Form1.StatusBox.Text := "ERROR: Network subsystem is unavailable";
10092: Form1.StatusBox.Text := "ERROR: WINSOCK.DLL version out of range";
else
Form1.StatusBox.Text := "ERROR: Unknown error";
end;
end;

lSock := socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if lSock = INVALID_SOCKET then
begin
Form1.StatusBox.Text := "SOCKET ERROR";
end;

host.sin_family := AF_INET;
host.sin_port := htons(3555);
host.sin_addr.S_addr := INADDR_ANY;
(* IF Host Button *)
if Stat = OnHOST then
begin
if bind(lSock,host,sizeof(host)) = SOCKET_ERROR then
begin
Form1.StatusBox.Text := "ERROR: Bind";
end;
listen(lSock,2);
sizeHost := sizeof(host);
lSock := accept(lSock,@host,@sizeHost);
if lSock = INVALID_SOCKET then
begin
Form1.StatusBox.Text := "ERROR: Accept";
WSACleanup();
closesocket(lSock);
end;
end;
(* IF Connect Button *)
if Stat = OffHOST then
begin
host.sin_addr.S_addr := inet_addr("127.0.0.1");
if connect(lSock,host,sizeof(host)) = SOCKET_ERROR then
Form1.StatusBox.Text := "ERROR: Connect Refused"
else
Form1.StatusBox.Text := "Connected Ok";
end;
end;

procedure TMyThread.Disconnect(HeadSock: TSocket);
begin
WSACleanup();
closesocket(HeadSock);
Form1.StatusBox.Text := "Disconnected";
end;
procedure TForm1.ButtonConnectClick(Sender: TObject);
begin
hreadClass.Stat := OffHOST;
hreadClass.Execute;
end;

procedure TForm1.ButtonHostClick(Sender: TObject);
begin
hreadClass.Stat := OnHOST;
hreadClass.Execute;
end;

procedure TForm1.ButtonDisconnectClick(Sender: TObject);
begin
hreadClass.Disconnect(hreadClass.HeadSock);
ExitThread(0);
end;
end.


При нажатии на кнопку ButtonHostClick
вылазит какая то ошибка жесткая. там написано че то про Debuging


 
HolACost!   (2003-08-20 18:22) [1]

Тупость! Где создание екземпляра потока?


 
Unknown__   (2003-08-20 18:41) [2]

Какой такой экземпляр ???
я на дельфи писать начал только вчера, я не знаю ни каких экземпляров.
мне просто нада прогу зделать где будут запускаться две задачи
что бы при выполнении функции accept прога не висла.
может кинешь линки где можно найти примеры работ с классом TTHread под Delphi 6...
буду очень благодарен. !)


 
Palladin   (2003-08-20 18:45) [3]

У меня нет слов. Тут нужна серьезна книжная терапия.


 
pasha_golub   (2003-08-20 18:46) [4]

2Unknown__
Если только вчера, то читайте книги, и не только про потоки, про ООП тоже почитайте


 
Unknown__   (2003-08-20 18:52) [5]

Супер! вы мне так помогли.
а вот ссылку так ни кто и не дадумался дать
http://www.delphimaster.ru/articles/thread/index.html


 
pasha_golub   (2003-08-20 18:56) [6]

2Unknown__

Товарищ, да хоть, две ссылки, если заниматься Ctrl+C да Ctrl+V, а ты ж спросил про ошибки и про еще чего-то там.
Все равно читай, тем более про потоки, это не Контролов на форму накидать



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

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

Наверх





Память: 0.46 MB
Время: 0.009 c
3-10599
Behemoth
2003-08-13 16:16
2003.09.04
Поможите понять работу с TQuery/TADOQuery.


6-10863
Hamelion
2003-06-23 22:19
2003.09.04
Как через IdFTP скопировать файл на Ftp сервер???


3-10638
SJ-79
2003-08-11 21:17
2003.09.04
Database Login


3-10645
Ден
2003-08-12 14:25
2003.09.04
Снова строки


14-10918
SergP
2003-08-17 20:32
2003.09.04
Как увеличить макс. кол-во соединений Эксплорера.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский