Delphi7 IdTcpClient 连接问题?
现在我有个 IdTcpClient 和 IdTcpServer 做的两个应用程序,一个客户端 一个服务端。
如果是在本机和局域网上,这两个程序可以相互通信,现在我需要将客户端放置在远程电脑上,需要通过互联网进行访问! 但是客户端连接不上服务端了。
在服务器上的 PORT=8123,在客户端使用这个端口和网络IP地址访问服务端,连接不上。
请问,在互联网上使用,是不是要通过什么中间件来做桥才能连接都上还是我那里设置的不对。
服务段代码:
- Delphi(Pascal) code
tcpServer.DefaultPort := sePort.Value; tcpServer.Active := true;
客户端代码:
- Delphi(Pascal) code
if (edtServerIP.Text <> '') and (edtName.Text <> '') and (not bConnected) then begin IdTCPClient.Host := edtServerIP.Text; IdTCPClient.Port := sePort.Value; try IdTCPClient.Connect; stat1.Panels[0].Text := '已连接到服务器'+edtServerIP.Text+' 连接时间:'+DateTimeToStr(Now); except mmoMsg.Lines.Add('无法连接到服务器'+edtServerIP.Text+',请联系管理员!'); end; end else begin if (edtServerIP.Text = '') or (edtName.Text = '') then ShowMessage('您需要输入服务器地址和用户名称才能连接到服务器。'); bConnected := False; end;求大神指点!
[解决办法]
是否静态IP(如果动态IP也要知道当前分配的)?是否在路由设置了映射,防火墙是否拦截了。否则通过IP,port是可以连接的。
[解决办法]
端口映射!
[解决办法]
如果服务器端windows 操作系统开启了防火墙,那么要在例外中设置开放你用到的端口号,一般我们上网都是非固定IP的,也就是说宽带拨号上网取得了一个外网IP地址,你在服务器的电脑上键入www.ip138.com可以看到你现在上网用的外网IP地址,那么客户端进行接入的时候,使用这个IP加上你的端口就可以联到服务器上来了,当你服务器端口使用了路由器的时候,要在路由器里进行端口映射,也就是数据转发处理,将这个端口号的数据转发到你的服务器局域网中服务主机的内网IP地址上来就可以了