三个小问题:1如何得到我这台正在上网的电脑的IP?2如果用TNMStrm和TNMStrmServ进行点对点的传输,那么是否只要提供双方的IP就可以进行?3.在两

  • 主题发起人 主题发起人 xhyph
  • 开始时间 开始时间
X

xhyph

Unregistered / Unconfirmed
GUEST, unregistred user!
三个小问题:1如何得到我这台正在上网的电脑的IP?2如果用TNMStrm和TNMStrmServ进行点对点的传输,那么是否只要提供双方的IP就可以进行?3.在两个局域网中,用上面两个控件是否可以通过Internet进行传输?(30分)<br />1如何得到我这台正在上网的电脑的IP?
这IP是指上网之后动态得到的IP

2如果用TNMStrm和TNMStrmServ进行点对点的传输,
那么是否只要提供双方的IP就可以进行?
3.在两个局域网中,用上面两个控件是否可以通过Internet进行传输?
我知道在局域网中的客户机是没有IP的,但是OICQ是怎么找到它的?
虽然客户机没有IP.但是如果把它们在一些网站上看见自己的IP告诉对方
那么用TNMStrm和TNMStrmServ进行点对点的传输是否有效?
 
1、在有网络的计算机上能够实现,不知道没有网卡的计算机上是否会出错。
也不知道是否适合你的拨号上网IP,没有条件你自己实验一下吧。

uses winsock;

procedure GetComputerNameAndIP;
var
wVersionRequested: WORD;
wsaData: TWSAData;
p: PHostEnt;
s: array[0..128] of char;
p2: pchar;
OutPut: array[0..100] of char;
begin
{Start up WinSock}
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);

{Get the computer name}
GetHostName(@s, 128);
p := GetHostByName(s);

{Get the IpAddress}
p2 := iNet_ntoa((PInAddr(p^.h_addr_list^))^);
StrPCopy(OutPut, 'Hostname: ' + Format('%s', [p^.h_Name]) + #10#13 +
'IPaddress: ' + Format('%s', [p2]));
WSACleanup;
MessageBox(0, OutPut, 'NetInfo', mb_ok or mb_iconinformation);
end;
 
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^ &lt;&gt; nil do begin
result:=StrPas(inet_ntoa(pptr^^));
Inc(I);
end;
WSACleanup;
end;
========================================
program get_ip;
uses
winsock,sysutils;
VAR
ch : ARRAY[1..32] OF Char;
i : Integer;
WSData: TWSAData;
MyHost: PHostEnt;
begin
IF WSAstartup(2,wsdata)&lt;&gt;0 THEN
BEGIN
Writeln('can''t start Winsock: Error ',WSAGetLastError);
Halt(2);
END;
try
IF getHostName(@ch[1],32)&lt;&gt;0 THEN
BEGIN
Writeln('getHostName failed');
Halt(3);
END;
except
Writeln('getHostName failed');
halt(3);
end;
MyHost:=GetHostByName(@ch[1]);
IF MyHost=NIL THEN
BEGIN
Writeln(GetHostName('+StrPas(@ch[1])+') failed : Error
'+IntToStr(WSAGetLastError));
Halt(4);
END
ELSE
BEGIN
Write('address ');
FOR i:=1 TO 4 DO
BEGIN
Write(Ord(MyHost.h_addr^[i-1]));
IF i&lt;4 THEN
then write('.')
ELSE
writeln;
END;
END;
end.
===========================================
 
还有两个问题呢?
谁知道?
 
2。提供ip和端口。
3。如果在局域网上,大概一定要端口,因为是转发出去的。
 
2、起码要一方知道另外一方的(双方都互相知道就不必),知道的一方主动连不知道的
3、双方在不同的防火墙后时不能直接连的,qq都不能在这个条件下传文件
 
多人接受答案了。
 
后退
顶部