【发布时间】:2025-12-01 13:20:05
【问题描述】:
我问的是这是否可以直接从互联网连接两个应用程序,而不使用公共 IP 地址作为隧道或连接器。
我使用此代码从不同的网络连接连接每台计算机。
客户端使用FTP上传文件发送到公共IP地址
function UploadToFtp(serverName, userid, password, fileName: string): LongBool;
var
hNet, hCon: HINTERNET;
begin
Result := False;
hNet := InternetOpen('myagent', INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0);
if Assigned(hNet) then
begin
hCon := InternetConnect(hNet, PChar(servername),
INTERNET_DEFAULT_FTP_PORT, PChar(userid), PChar(password),
INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0
);
if Assigned(hCon) then
begin
Result := FtpPutFile(hCon, PChar(fileName),
PChar(ExtractFileName(fileName)), FTP_TRANSFER_TYPE_ASCII, 0
);
InternetCloseHandle(hCon);
end else ShowMessage(SysErrorMessage(GetLastError));
InternetCloseHandle(hNet);
end else ShowMessage(SysErrorMessage(GetLastError));
end;
从公共IP地址收集信息的服务器。
function DownLoadFileFromFTP(server, username, password, localfile, remotefile: string; port: word = 21): boolean;
var
hopen, hconnect: HINTERNET;
good:boolean;
begin
hopen := InternetOpen('myagent', INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0);
hconnect := InternetConnect(hopen, pchar(server), port, pchar(username), pchar(password), INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
good := FtpGetFile(hconnect, pchar(remotefile), pchar(localfile), false, 0, FTP_TRANSFER_TYPE_UNKNOWN, 0);
InternetCloseHandle(hconnect);
Result := good;
end;
> 有没有办法直接连接每台计算机而不使用 FTP,我的意思是套接字?或者有什么方法可以直接连接来自不同网络的两台计算机?
是否在每台计算机上使用(来自 Delphi 的 Web 服务)Web 组件? 我真的不知道该怎么做,或者直接连接每个选项的任何选项。
谢谢
【问题讨论】:
-
我建议您对诸如 NAT 穿越、公共和私有 IP 之类的事情进行一些研究。