K
karnor
Unregistered / Unconfirmed
GUEST, unregistred user!
小弟最近准备开发一个商务通讯软件,该软件具有类似于OICQ的功能。目前有不少技术上的疑惑,望高手给予指导意见,不胜感激!
1.用Delphi5.0的Socket获得客户端的IP地址是可以的,客户端是自己拨号上网,那么得到的是动态分配的IP地址,是唯一的,但是如果客户端是在局域网内用ADSL上网,那么用Socket的方法得到的是不是该机器在局域网中的IP地址,如果是这样的话不是不能定位用户了吗?OICQ大致是通过什么方法来发送给指定用户信息的呢?是通过IP地址吗?如果是的话遇到上面的情况怎么办?
2.请问怎样使服务端的软件能实时监测到有哪个用户突然上线或下线了,尤其是下线,如果是用户突然电话线中断连接,那服务端又怎么监测到呢?
我做了试验,发现用WinSocket的方法对于同在局域网内或同是拨号上网的机器,
都能监测到对方的IP地址,但是如果两台机器一台拨号上网,一台通过局域网上网,
那么由于存在一个网关的问题,服务端则不能监测到对方的IP地址了,必须另想办法。
听说Delphi6.0中的Indy控件面板上的TCPClient和TCPServer控件能解决这一问题,
另外听说用UDP控件也能实现这样的功能,能给予我帮助吗?
1.用Delphi5.0的Socket获得客户端的IP地址是可以的,客户端是自己拨号上网,那么得到的是动态分配的IP地址,是唯一的,但是如果客户端是在局域网内用ADSL上网,那么用Socket的方法得到的是不是该机器在局域网中的IP地址,如果是这样的话不是不能定位用户了吗?OICQ大致是通过什么方法来发送给指定用户信息的呢?是通过IP地址吗?如果是的话遇到上面的情况怎么办?
2.请问怎样使服务端的软件能实时监测到有哪个用户突然上线或下线了,尤其是下线,如果是用户突然电话线中断连接,那服务端又怎么监测到呢?
我做了试验,发现用WinSocket的方法对于同在局域网内或同是拨号上网的机器,
都能监测到对方的IP地址,但是如果两台机器一台拨号上网,一台通过局域网上网,
那么由于存在一个网关的问题,服务端则不能监测到对方的IP地址了,必须另想办法。
听说Delphi6.0中的Indy控件面板上的TCPClient和TCPServer控件能解决这一问题,
另外听说用UDP控件也能实现这样的功能,能给予我帮助吗?