안녕하십니까..일주일째 이 문제로 골머리를 앓고 있습니다..
제발 좀 도와주십시요..
제가 구현하고자 하는 건 여러대의 서버에 연결해서 일괄적인 정보를 보다가 이상이 있는 서버가 발견되었을때 그 놈에게 별도로 연결해서 세부적인 정보를 보는겁니다..
그래니 각각을 쓰레드로 구현을 해야하잖아요..한쪽은 한놈씩 연결해서 정보를 보여주고, 한쪽은 특정(이상이 있는) 서버에 붙어서 그 놈 정보만을 보여주고...
편의상 아래처럼 전자의 경우를 PC1_Thread, 후자의 경우를 PC2_Thread라고 합시다..그런데 쓰레드 PC1_Thread 안에서부터 소켓 연결이 안됩니다..소켓 이벤트도 발생하지 않구요..(연결중,연결,에러 등도 전혀 발생하지 않거든요..)
여기서부터 막히니 솔직히 앞이 깜깜하네요..
해결좀 해주세요..미치겠슴다..
그리고 쓰레드에 대해선 잘 몰라서 그러는데 syncronize인가요? 그런것들도 있던데 그런거도 필요한가요?
부탁드립니다..제발..아래는 소스 중에서 연관있는부분만 발췌한 겁니다..
unit uMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, ExtCtrls, Series, TeEngine, TeeProcs, Chart, StdCtrls, ScktComp,
ImgList, Menus,Winsock, RXCtrls, IdBaseComponent, IdComponent; //Winsock : inet_addr
TForm1 = class(TForm)
ClientSocket1: TClientSocket;
procedure ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Connecting(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
procedure BtnPC1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TPC1_Thread = class(TThread)
private
//procedure Update;
protected
procedure Execute; override;
end;
TPC2_Thread = class(TThread)
private
//procedure Update;
protected
//procedure Execute; override;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
ShowMessage('연결.!!');
end;
procedure TForm1.ClientSocket1Connecting(Sender: TObject;
Socket: TCustomWinSocket);
begin
ShowMessage('연결중.!!');
end;
procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
ShowMessage('연결이 끊어졌습니다.');
end;
procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
ShowMessage('연결 에러.');
end;
procedure TForm1.BtnPC1Click(Sender: TObject);
var
PC1_Thread :TPC1_Thread;
begin
//전체 릴레이 정보 보기 쓰레드 생성..
PC1_Thread := TAllRelay_Thread.Create(true);
PC1_Thread.Priority := tpHigher;
//All_R_Thread.Resume;
end;
///////////////////////////////
// 쓰레드 실행 프로시져 : 연결해서 정보를 가져와서 채운다..
procedure TPC1_Thread.Execute;
begin
Form1.ClientSocket1.Host := '211.61.13.133';
Form1.ClientSocket1.Port := 7820;
Form1.ClientSocket1.Active := True;
end;
end.