Форум: "Основная";
Текущий архив: 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