高手相助!急啊!(0分)

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控件也能实现这样的功能,能给予我帮助吗?


 
首先,请高手帮忙就不给分了吗?没分招呼一声也是好的,什么也不说总
不太好的。
其次,有必要发两张帖子吗?
最后,为什么不在题目中写清楚你的问题的要点,非要大家打开你的帖子才知道原来
这个问题我不会,浪费大家的时间很好玩儿吗?
[:(!][:(!][:(!][:(!][:(!][:(!][:(!][:(!][:(!]
 
我也有同样的疑惑,当那个时候,如果通过计算机名去查IP会找到上网的动态IP,但用那些机器原来的IP还是能连接它们的。
 
对不起,我现在实在没分,但是真的很急!帮帮忙咯
 
关于问题1:
他们的客户端端口号肯定不一样。

关于问题2,请看:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=526441
http://www.delphibbs.com/delphibbs/dispq.asp?lid=545564
 
我用UDP试过了,但是UDP的LocalPort和RemotePort两个属性是要自己在程序中定义的,而且
必须是一样的才可以通讯,那这样还有什么意义呢?我就不能通过端口号+IP来定位激起了。
 
这个问题确实很重要,如何对于没有IP地址的机器发信息,值得讨论,如果谁能回答,我给1000分!
 
顶部