Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.30;
Скачать: CL | DM;

Вниз

Вывести ip на экран!   Найти похожие ветки 

 
zitrol   (2002-11-20 00:05) [0]

Читал статьи, help,faq...
Кто-нибудь может доходчиво объяснить!? А лучше дать пример!
Что-то не въезжаю - совсем недавно изучаю Delphi.
использую компоненту TServerSocket.
Понял, что:
LocalAddress, LocalHost, LocalPort - соответственно - локальный IP-адрес, хост-имя, порт;
RemoteAddress, RemoteHost, RemotePort - соответственно - удаленный IP-адрес, хост-имя, порт;
Но вот никак не доходит, как на экран вывести ip клиента!
К примеру(это я на борладн билдере сюшном делал -одно и тоже):

void __fastcall TfrmMain::sctServerGetThread(TObject *Sender,
TServerClientWinSocket *ClientSocket,
TServerClientThread *&SocketThread)
{
frmMain->mmInfo->Lines->Add("Open thread 1");
SocketThread = new CServerThread(false, ClientSocket);
}

Как здесь же вывести ip клиента(в Lines)?
СПАСИБО!


 
Morfein ©   (2002-11-21 22:17) [1]

Хм... что-то типа
frmMain->mmInfo->Lines->Add(IntToStr(ClientSocket->RemoteAddress));


 
Victor_Cr ©   (2002-11-22 10:24) [2]

2 Morfein © (21.11.02 22:17)

Ну допустим насчет IntToStr() ты перестарался.


 
Morfein ©   (2002-11-22 12:37) [3]

тьфу ты... спутал :))


 
raven79   (2002-11-22 13:53) [4]

забудьте....

function DetectHostIP : string;
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe : PHostEnt;
pptr : PaPInAddr;
Buffer : array [0..63] of char;
I : Integer;
GInitData : TWSADATA;
begin
WSAStartup($101, GInitData);
Result := "";
GetHostName(Buffer, SizeOf(Buffer));
phe :=GetHostByName(buffer);
if phe = nil then Exit;
pptr := PaPInAddr(Phe^.h_addr_list);
I := 0;
while pptr^[I] <> nil do begin
result:=StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;


 
Morfein ©   (2002-11-22 20:41) [5]

Ну и зачем?
В свойстве компонента это уже давно определено...


 
raven79   (2002-11-23 05:56) [6]

ну раз не мог чел с компонетнтом разобраться... вот код...


 
TAG_SPB ©   (2002-11-26 18:35) [7]

В тему :

Народ! никто не сталкивался с ЗАВИСАНИЕМ на ф-ии
GetHostName(Buffer, SizeOf(Buffer));

возникает при нескольких одинаковых логинах одновременно
(типа 2-3 GUEST"а в сети)


 
mdaemon   (2002-12-04 13:37) [8]

Вот чем могу тем погогу а дальше поковыряйся сам....uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Winsock, StdCtrls, ExtCtrls, Menus ,clipbrd;

type
TForm1 = class(TForm)
Timer1: TTimer;
PopupMenu1: TPopupMenu;
Exit1: TMenuItem;
Label1: TLabel;
Copy1: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure formmousedown(sender: tobject; button: tmousebutton;
shift: tshiftstate; x, y: integer);
procedure Edit1StartDrag(Sender: TObject; var DragObject: TDragObject);
procedure Copy1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

// returns ISP assigned IP
function LocalIP : string;
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe : PHostEnt;
pptr : PaPInAddr;
Buffer : array [0..63] of char;
I : Integer;
GInitData : TWSADATA;

begin
WSAStartup($101, GInitData);
Result := "";
GetHostName(Buffer, SizeOf(Buffer));
phe :=GetHostByName(buffer);
if phe = nil then Exit;
pptr := PaPInAddr(Phe^.h_addr_list);
I := 0;
while pptr^[I] <> nil do begin
result:=StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;

{subject : moving forms (and other twincontrols) without using the caption-bar}

procedure tForm1.formmousedown(sender: tobject; button: tmousebutton;
shift: tshiftstate; x, y: integer);
const
sc_dragmove = $f012;
begin
releasecapture;
twincontrol(application.mainform).perform(wm_syscommand,sc_dragmove, 0);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
FullRgn, ClientRgn, ButtonRgn: THandle;
Margin, X, Y: Integer;
begin
top:=screen.Height-50;
left:=screen.width-120;
height:=Label1.Height;
width:=Label1.width;
Margin := (Width - ClientWidth) div 2;
FullRgn := CreateRectRgn(0, 0, Width, Height);
X := Margin;
Y := Height - ClientHeight - Margin;
ClientRgn := CreateRectRgn(X, Y, X + ClientWidth, Y + ClientHeight);
CombineRgn(FullRgn, FullRgn, ClientRgn, RGN_DIFF);
X := X + Label1.Left;
Y := Y + Label1.Top;
ButtonRgn := CreateRectRgn(X, Y, X + Label1.Width, Y + Label1.Height);
CombineRgn(FullRgn, FullRgn, ButtonRgn, RGN_OR);
SetWindowRgn(Handle, FullRgn, True);
//Hide Taskbar Icon
ShowWindow( Application.Handle, SW_HIDE );
SetWindowLong( Application.Handle, GWL_EXSTYLE,
GetWindowLong(Application.Handle, GWL_EXSTYLE) or
WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
ShowWindow( Application.Handle, SW_SHOW );
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.interval:=1000*100;
Label1.Caption:="IP: "+LocalIP;
end;

procedure TForm1.Exit1Click(Sender: TObject);
begin
application.terminate;
end;

procedure TForm1.Edit1StartDrag(Sender: TObject;
var DragObject: TDragObject);
const
sc_dragmove = $f012;
begin
releasecapture;
twincontrol(application.mainform).perform(wm_syscommand,sc_dragmove, 0);

end;

procedure TForm1.Copy1Click(Sender: TObject);
begin
Clipboard.SetTextBuf(Pchar(copy(Label1.caption,4,255)));
end;

end.






 
reallyDeflorator   (2002-12-04 13:50) [9]

Все гении - ленивые люди. (Кто - то из мудрых...)

У меня тоже была такая прблема, когда я чат для своей локалки писал.
Так как я ленивая падла, то я сделал следующее:
1 сказал клиенту в ОнРид, чтоб он, паскуда по прибытию такой-то и такой-то строки отправлял серверу свой айпи
2 подлечил сервер, указав, какуюстроку надо отправлять, чтобы получить айпи и как его получить

и все
люблю ленивых перцев, а себя ещё больше



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

Текущий архив: 2003.01.30;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
1-96673
Temp
2003-01-21 16:57
2003.01.30
StringGrid


1-96829
Kair
2003-01-20 20:24
2003.01.30
Сё, то


1-96662
gsu
2003-01-21 15:01
2003.01.30
Dreak


9-96505
Lamer86
2002-07-29 10:19
2003.01.30
Sprites в DelphiX


14-97003
Шутник
2003-01-13 16:08
2003.01.30
Про лес