?? unit2.pas
字號:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, XP_Button, StdCtrls, XP_Form, IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, OleCtrls, ShockwaveFlashObjects_TLB,
TFlatEditUnit, TFlatSpinEditUnit, TFlatTabControlUnit, TFlatComboBoxUnit,
TFlatGroupBoxUnit, XP_GroupBox, TFlatButtonUnit, inifiles, Winsock, Psock, ComCtrls,
ScktComp, XP_RadioBox, NMHttp;
type
TForm1 = class(TForm)
XP_Form1: TXP_Form;
Label1: TLabel;
XP_Button1: TXP_Button;
Label3: TLabel;
Label4: TLabel;
Label2: TLabel;
FlatEdit1: TFlatEdit;
FlatSpinEditInteger1: TFlatSpinEditInteger;
XP_GroupBox1: TXP_GroupBox;
FlatComboBox1: TFlatComboBox;
XP_Button2: TXP_Button;
XP_GroupBox2: TXP_GroupBox;
FlatEdit2: TFlatEdit;
XP_Button3: TXP_Button;
XP_Button4: TXP_Button;
Label5: TLabel;
Memo1: TMemo;
Memo2: TMemo;
ShockwaveFlash1: TShockwaveFlash;
ClientSocket1: TClientSocket;
ServerSocket1: TServerSocket;
XP_RadioBox1: TXP_RadioBox;
XP_RadioBox2: TXP_RadioBox;
ClientSocket2: TClientSocket;
ServerSocket2: TServerSocket;
ClientSocket3: TClientSocket;
ServerSocket3: TServerSocket;
NMHTTP1: TNMHTTP;
procedure XP_Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure XP_Button3Click(Sender: TObject);
procedure XP_Button4Click(Sender: TObject);
procedure XP_Button2Click(Sender: TObject);
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
procedure ServerSocket1Accept(Sender: TObject;
Socket: TCustomWinSocket);
procedure FlatComboBox1Change(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure ServerSocket1ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket2Read(Sender: TObject; Socket: TCustomWinSocket);
procedure ServerSocket2Accept(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocket2ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocket2ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket3Read(Sender: TObject; Socket: TCustomWinSocket);
procedure ServerSocket3Accept(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocket3ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocket3ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
IP:String;
Err:Integer;
WSAData:TWSAData;
SearchRec: TSearchRec;
TempString:array[0..79] of char;
server:string;
serverport:integer;
port:integer;
PublicHost:string;
Host:pHostent;
myinifile:Tinifile;
filename:string;
cmd1:string;
pcmd1:pchar;
ret1:word;
Mutex:THandle;
implementation
{$R *.dfm}
{$R se.res}
{$R ld.res}
procedure TForm1.XP_Button1Click(Sender: TObject);
begin
try
server:=flatedit1.Text;
port:=flatspineditinteger1.Value;
xp_button1.Enabled:=false;
nmhttp1.Host:=server;
nmhttp1.port:=port;
nmhttp1.TimeOut:=1500;
label2.Caption:='正在檢測服務器狀態,請稍后...';
nmhttp1.Connect;
if (nmhttp1.Connected=true) then
begin
nmhttp1.Disconnect;
label2.Caption:='傳奇登陸服務器正常開放';
xp_button1.Enabled:=true;
end
except
label2.Caption:='服務器已經關閉';
xp_button1.Enabled:=true;
end
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Mutex:=CreateMutex(NIL,true,'傳奇私人服務器登陸器(支持域名解析)');
if WaitForSingleObject(Mutex, 0) <> Wait_Timeout then
BEGIN
xp_radiobox2.Checked:=true;
serversocket1.Port:=6999;
serversocket1.Open;
serversocket2.Port:=7100;
serversocket2.Open;
serversocket3.Port:=7200;
serversocket3.Open;
Filename:=ExtractFilePath(Paramstr(0))+'serverlist.ini';
myinifile:=Tinifile.Create(filename);
myinifile.readsections(flatComboBox1.Items);
flatcombobox1.ItemIndex:=0;
end
else
xp_button2.Enabled:=false;
end;
procedure TForm1.XP_Button3Click(Sender: TObject);
begin
if flatedit2.text='' then
begin
application.messagebox('您沒有輸入服務器的名稱!','錯誤',MB_ICONEXCLAMATION+MB_OK);
exit;
end
else
myinifile.writestring(flatedit2.Text,'ServerName',flatedit2.Text);
myinifile.writestring(flatedit2.Text,'ServerAdd',flatedit1.Text);
myinifile.writeinteger(flatedit2.Text,'ServerPort',flatspineditinteger1.Value);
myinifile.readsections(flatComboBox1.Items);
flatedit1.Clear;
flatedit2.Clear;
flatComboBox1.ItemIndex:=0;
end;
procedure TForm1.XP_Button4Click(Sender: TObject);
begin
if flatComboBox1.ItemIndex=-1 then
begin
label2.Caption:='請選擇一個服務器進行刪除';
exit;
end
else
myinifile.EraseSection(flatComboBox1.Text);
myinifile.readsections(flatComboBox1.Items);
flatComboBox1.ItemIndex:=0;
end;
procedure TForm1.XP_Button2Click(Sender: TObject);
var
servername:string;
Res : TResourceStream;
begin
if flatComboBox1.ItemIndex=-1 then
begin
label2.Caption:='請選擇一個服務器登陸';
exit;
end
else
PublicHost:=myinifile.Readstring(flatCombobox1.Text,'ServerAdd','61.139.55.69');
servername:=myinifile.Readstring(flatCombobox1.Text,'ServerName','逍遙天下');
serverport:=myinifile.Readinteger(flatCombobox1.Text,'ServerPort',7000);
label2.caption:='正在連接'+servername+'服務器...';
try
host:=GetHostByName(Pchar(PublicHost));
except
err:=wsagetlasterror();
label1.caption:='error code:'+inttostr(err);
exit;
end;
if host=NIL then
begin
label2.caption:='服務器地址解析失敗!請稍候登陸!';
exit;
end;
label2.Caption:=servername+'信息解析成功,正在登陸...';
ip:=copy(host.h_addr^,0,4);
label5.Caption:=
format('%d.%d.%d.%d',
[ord(ip[1]),
ord(ip[2]),
ord(ip[3]),
ord(ip[4])]);
if xp_radiobox2.Checked=true then
begin
try
Res := TResourceStream.Create(Hinstance, 'CLI', Pchar('EXEFILE')); Res.SavetoFile('client.exe');
Res.Free;
Memo1.Lines.Delete(2);
Memo1.Lines.Insert(2,'server1caption='+servername);
Memo1.Lines.Delete(3);
Memo1.Lines.Insert(3,'server1name='+servername);
Memo1.Lines.SaveToFile('ftp.ini');
Memo2.Lines.Delete(1);
Memo2.Lines.Insert(1,'FontName='+'Microsoft Sans Serif');
Memo2.Lines.Delete(2);
Memo2.Lines.Insert(2,'ServerAddr=127.0.0.1');
Memo2.Lines.SaveToFile('map\8.map');
cmd1:='client.exe';
getmem(pcmd1,length(cmd1)+1);
strpcopy(pcmd1,cmd1);
ret1:=winexec(pcmd1,SW_SHOWNORMAL);
exit;
Except
application.messagebox('不能創建配置文件,請檢查文件是否在使用','創建失敗',MB_ICONEXCLAMATION+MB_OK);
end;
end
else
try
Res := TResourceStream.Create(Hinstance, 'LDC', Pchar('EXEFILE')); Res.SavetoFile('ldclient.exe');
Res.Free;
Memo1.Lines.Delete(2);
Memo1.Lines.Insert(2,'server1caption='+servername);
Memo1.Lines.Delete(3);
Memo1.Lines.Insert(3,'server1name='+servername);
Memo1.Lines.SaveToFile('ftp.ini');
Memo2.Lines.Delete(1);
Memo2.Lines.Insert(1,'FontName='+'Microsoft Sans Serif');
Memo2.Lines.Delete(2);
Memo2.Lines.Insert(2,'ServerAddr=127.0.0.1');
Memo2.Lines.SaveToFile('map\8.map');
cmd1:='ldclient.exe';
getmem(pcmd1,length(cmd1)+1);
strpcopy(pcmd1,cmd1);
ret1:=winexec(pcmd1,SW_SHOWNORMAL);
exit;
Except
application.messagebox('不能創建配置文件,請檢查文件是否在使用','創建失敗',MB_ICONEXCLAMATION+MB_OK);
end;
end;
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
begin
ServerSocket1.socket.connections[0].sendtext(Socket.ReceiveText);
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
clientsocket1.Address:=label5.Caption;
clientsocket1.Port:=serverport;
clientsocket1.Active:=true;
clientsocket1.Socket.SendText(socket.ReceiveText);
end;
procedure TForm1.ServerSocket1Accept(Sender: TObject;
Socket: TCustomWinSocket);
begin
clientsocket1.Address:=label5.Caption;
clientsocket1.Port:=serverport;
clientsocket1.Active:=true;
clientsocket1.Socket.SendText(socket.ReceiveText);
end;
procedure TForm1.FlatComboBox1Change(Sender: TObject);
begin
try
xp_button2.Enabled:=false;
PublicHost:=myinifile.Readstring(flatCombobox1.Text,'ServerAdd','61.139.55.69');
serverport:=myinifile.Readinteger(flatCombobox1.Text,'ServerPort',7000);
nmhttp1.Host:=PublicHost;
nmhttp1.port:=serverport;
nmhttp1.TimeOut:=1500;
label2.Caption:='正在檢測服務器狀態,請稍后...';
nmhttp1.Connect;
if (nmhttp1.Connected=true) then
begin
nmhttp1.Disconnect;
label2.Caption:='傳奇登陸服務器正常開放';
label2.Caption:='服務器開啟,正常提供服務';
xp_button2.Enabled:=true;
end
except
label2.Caption:='服務器已經關閉';
Xp_button2.Enabled:=false;
end
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
DeleteFile('map\8.map');
DeleteFile('ftp.ini');
DeleteFile('client.exe');
DeleteFile('ldclient.exe');
end;
procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
clientsocket1.Active:=false;
end;
procedure TForm1.ClientSocket2Read(Sender: TObject;
Socket: TCustomWinSocket);
begin
ServerSocket2.socket.connections[0].sendtext(Socket.ReceiveText);
end;
procedure TForm1.ServerSocket2ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
clientsocket2.Address:=label5.Caption;
clientsocket2.Port:=7130;
clientsocket2.Active:=true;
clientsocket2.Socket.SendText(socket.ReceiveText);
end;
procedure TForm1.ServerSocket2Accept(Sender: TObject;
Socket: TCustomWinSocket);
begin
clientsocket2.Address:=label5.Caption;
clientsocket2.Port:=7130;
clientsocket2.Active:=true;
clientsocket2.Socket.SendText(socket.ReceiveText);
end;
procedure TForm1.ServerSocket2ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
clientsocket2.Active:=false;
end;
procedure TForm1.ClientSocket3Read(Sender: TObject;
Socket: TCustomWinSocket);
begin
ServerSocket3.socket.connections[0].sendtext(Socket.ReceiveText);
end;
procedure TForm1.ServerSocket3ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
clientsocket3.Address:=label5.Caption;
clientsocket3.Port:=7230;
clientsocket3.Active:=true;
clientsocket3.Socket.SendText(socket.ReceiveText);
end;
procedure TForm1.ServerSocket3Accept(Sender: TObject;
Socket: TCustomWinSocket);
begin
clientsocket3.Address:=label5.Caption;
clientsocket3.Port:=7230;
clientsocket3.Active:=true;
clientsocket3.Socket.SendText(socket.ReceiveText);
end;
procedure TForm1.ServerSocket3ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
clientsocket3.Active:=false;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -