clientsocket问题,高手帮忙看一下 ( 积分: 200 )

  • 主题发起人 主题发起人 synflood
  • 开始时间 开始时间
S

synflood

Unregistered / Unconfirmed
GUEST, unregistred user!
使用serversocket/clientsocket开发一套C/S程序中.为何当client上线的时候在server端显示的client的IP为内网IP.而不是INTERNET上的IP地址?
 
使用serversocket/clientsocket开发一套C/S程序中.为何当client上线的时候在server端显示的client的IP为内网IP.而不是INTERNET上的IP地址?
 
procedure TForm1.infoConnect(Sender: TObject; Socket: TCustomWinSocket);
begin

Timer1.Enabled:=False;
info.Socket.SendText('info'+Getinfo());
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
info.Host:='nslook.3322.org';
info.Port:=8080;
info.Active:=true;

end;
 
如果它们可以通过intranet相连,就不用通过internet连接了
这就像你是中国人,在中国,你用中国的身份证就可以了,不需要你用绿卡。
如果你把serversocket放置在internet上,并和clientsocket不在同一个局域网,clientsocket和serversocket连接后就会显示它的internet的ip。
 
但是如果CLIENTSOCKET在内网的话.传递出的IP就是内网的IP.而不是想获得的外网的IP
 
如果它们可以通过intranet相连,就不用通过internet连接了
网络就是这样的
 
property RemoteHost: string read GetRemoteHost;
property RemoteAddress: string read GetRemoteAddress;
property RemotePort: Integer read GetRemotePort;
property RemoteAddr: TSockAddrIn read GetRemoteAddr;


procedure TForm1.ServerSocket1Accept(Sender: TObject;
Socket: TCustomWinSocket);
begin
Socket.RemoteAddress;
end;
 
不会吧,我的serversocket端为公网IP,而clientsocket为内网或者公网IP的话

在serversocket端显示的都是公网IP。从来没有出现过内网的。
 
如果它们可以通过intranet相连,就不用通过internet连接了
网络就是这样的
不能理解这么话吗?
 
后退
顶部