| imho.ws |
![]() |
|
|
|
# 1 |
|
Banned
Регистрация: 08.08.2005
Адрес: ЗАВОД на УКЕ
Сообщения: 52
![]() |
Delphi создание удаленной БД
Привет всем!
Меня интересуте такой вот интересный вопрос. Как получить список клиентов(IP адрес компа, имя компа и др.) которые подключились к серверу БД? На сервере используются компоненты: DataBase, table, session, provider. НА клиенте: SocketConnection, ClientDataSet |
|
|
|
|
# 4 |
|
::VIP::
Регистрация: 19.03.2004
Сообщения: 1 329
![]() ![]() ![]() ![]() |
На сколько я понимаю есть клиент-серверное приложение на Delphi/C++Builder, сервер которого просто использует файлы-таблицы формата Paradox (*.db), а не полноценный сервер SQL с авторизацией пользователей.
В таком случае видимо следует организвать идентификацию пользователей в самой серверной части приложения, а клиентам для получения доступа к данным авторизовать себя. Через это и получать информацию о них. |
|
|
|
|
# 5 |
|
Banned
Регистрация: 08.08.2005
Адрес: ЗАВОД на УКЕ
Сообщения: 52
![]() |
ОК! Тогда вопрос такой. Как сделать так, что бы при подключении клиент не сам забивал свои IP или ИмяКомпа, клиентское приложение само доставало информацию об IP и с того компа откуда была запущена клиентская программа.
(НУЖЕН КОД)
|
|
|
|
|
# 6 |
|
::VIP::
Регистрация: 19.03.2004
Сообщения: 1 329
![]() ![]() ![]() ![]() |
Яndex...
Код:
uses
WinSock;
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 := inet_ntoa(pptr^[I]^);
Inc(I);
end;
WSACleanup;
end;
function IPAddrToName(IPAddr: string): string;
var
SockAddrIn: TSockAddrIn;
HostEnt: PHostEnt;
WSAData: TWSAData;
begin
WSAStartup($101, WSAData);
SockAddrIn.sin_addr.s_addr := inet_addr(PChar(IPAddr));
HostEnt := gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
if HostEnt <> nil then
Result := StrPas(Hostent^.h_name)
else
Result := '';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(IPAddrToName(LocalIp));
end;
{**************************************}
// Function to get the IP Address from a Host
function GetIPFromHost(const HostName: string): string;
type
TaPInAddr = array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
i: Integer;
GInitData: TWSAData;
begin
WSAStartup($101, GInitData);
Result := '';
phe := GetHostByName(PChar(HostName));
if phe = nil then Exit;
pPtr := PaPInAddr(phe^.h_addr_list);
i := 0;
while pPtr^[i] <> nil do
begin
Result := inet_ntoa(pptr^[i]^);
Inc(i);
end;
WSACleanup;
end;
|
|
|
|
|
# 8 | |
|
::VIP::
Регистрация: 19.03.2004
Сообщения: 1 329
![]() ![]() ![]() ![]() |
Ну ёлки палки, как же ты пишешь многопользовательское приложение с БД, если не можешь разобраться в кусочке кода?
Цитата:
|
|
|
|