我毕业设计想做一个广域网的聊天程序,向各位请教(150分)

  • 主题发起人 主题发起人 kaolaxiong
  • 开始时间 开始时间
K

kaolaxiong

Unregistered / Unconfirmed
GUEST, unregistred user!
有一台服务器,申请固定ip地址;每个客户申请一个昵称(类似于QQ的号码,唯一),登陆服务器后就可以给自己的朋友发送消息,有几个难题,向各位请教:
1.一个用户登陆时我要记录他的ip地址,还有那些信息
2.如果我知道对方的internet的ip地址,我怎么能建立到对方tcp/ip连接呀,给对方发送消息( 我试过了,我知道对方internet ip,但是ping不通的 )
3.如果几个人属于一个局域网,试用代理服务器上网,我怎么区分他们呀
4.delphi里用什么控件实现比较容易,请给点思路
比较急,请多多帮忙,分不够在加,多谢
 
我先留个记号
 
1、记录哪些信息看你的需要了,ip是必须的
2、对方登录后保持连接,以后发消息就不用再连接了
3、在同一局域网上来的用户端口是不同的,他们对应不同的连接,发信息时用的是socket,而不是对方的地址
4、从2看你是要用TCP协议,delphi里的socketserver/clientsocket和idtcpserver/idtcpclient都可以
 
问题是:我昨天试了,用TcpServer和TcpClient,他客户端要提供RemoteHost和RemotePort,我都做了设置;服务端要提供LocalHost和LocalPort,不知道LocalHost是指什么;
另外我的机器在一个局域网,通过代理上网,对方是adsl上网,我和他不能建立连接;用ping他的internet地址也是不通的,不知道中间要做什么动作
 
回答:
1、记录哪些信息你看着办好了,姓名、性别、婚否、三围...哈哈;
2、你自己有固定公网IP的服务器,你还怕什么?!
3、你不用区分,TCP/IP协议会帮你区分;
4、indy就很不错!
 
目前遇到的第一个难题是,我和对方都通过adsl上网,这个地址都是动态分配的,我们彼此知道对方地址后,我用tcpclient和tcpserver同对方建立连接,这个想法对不对?怎么能建立连接呀( 我昨天试过了,没有成功 )
 
首先你要确信ADSL拨号上网,电信局会给你公网IP地址!
 
这个ip地址是动态分配的,不能用吗
 
那qq的两个人之间不通过代理,是怎么发送消息的
我刚开始弄这个,好多东西不懂,请大家多多帮忙
 
除了 IP 还要端口号
因为对方可能用代理上网的。
 
还是没有弄清楚,那位高手再给说说呀
 
怎么没有人帮我呀,难道没有人会吗
 
关注。。。这个问题,还要考虑报头分析
 
既然服务器的IP已知且固定,那让客户端程序在启动的时候,自动获取客户机的ip在送到
服务器端这样行不行?
 
呵呵,看来搞IM的人不少嘛。
问题问的有点大,不太好答呀。做IM有好几种方式,一种用UDP,客户端之间尽可能是P2P,好象QQ就是这样的。另一种用TCP,所有的数据都由服务器转发,MSN Messenger是典型代表。
1.记哪些信息全看你的具体实现的需要,如果用TCP的服务器转发的话,客户端IP就不是必须的。
2.不要试图用TCP去连接客户端,而应该让所有的客户端连接到你的有固定IP的服务器上。在服务器上你所做的是listen和accept。
3.如果用的是TCP经服务器转发的模式,就不要根据客户的IP来区分,而应该根据接受客户连接时生成的socket来定位用户。如果用UDP,就要记下每客户端的IP和Port(有可能是客户NAT的IP和端口),好让服务器帮忙实现“UDP Hole Punching”,从而建立P2P通信通道。
4.Delphi里没有什么控件实现比较容易,做个东东玩玩可以用Indy,如果真做实用的IM服务器,大并发量的访问是很头疼的,牵涉许多I/O模型和线程调度的问题。当然,如果你有money,可以摆个n台服务器在那里伺候着(象msn和QQ一样)。
呵呵,正好最近对IM比较感兴趣,有共同爱好的可以多切磋切磋。
 
LeeChange 能联系一下吗? udp 连接的问题我一直不能解决, QQ 上指教一下。 179608325
 
我最近做了个GPRS 远程抄表程序,也是类似P2P。
LeeChange 看来你是一个高手,很想和你聊聊,
我的QQ:28972303
 
LeeChange,可以告诉qq吗,向你多请教请教
 
关键的问题是server的地址不能是变动的,象qq这类工具,dns是不能解析的,所以用
client主动连接server是正确的,client可以动态变化,只要用固定协议锁定端口可以了,还有一个难题,如果双方都有防火墙就不好说了!问题研究中……
 
下晨曦群组讨论软件源码研究研究吧。
服务器不管有没有固定IP,都可行
 
后退
顶部