发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 大数据 扩展性 并发编程 事件驱动 分布式 SOA
1 2 下一页 Go 2

建私人聊天室的一个问题

    
2003-12-02 21:26
赞助商链接

偶是菜鸟,第一次来这里,还请大师们多多指点!:P

我在做一个私人聊天室,设计思想是这样的:

客户A进去以后,可以选择看看在线客户列表,然后选择一个人,比如B,告诉服务器,服务器再告诉B,一旦B答应和他聊天了,服务器返回这个消息。A就是一个暂时的服务器了,开放一个socket,用于监听来自B的请求,B发出一个请求以后,A给他分配一个socket,这样他俩就可以直接通信了,不通过服务器中转。在A和B聊天的时候,如果C告诉服务器,他要和A或者B聊天,服务器会告诉他他俩正忙着,没功夫理他,一边待着去吧。

现在的问题是,我已经完成了包括在线用户列表、让C等待,建立A和B连接在内的一些任务,可是A和B说什么都不能互相通信。

因为A要是一个暂时的服务器,所以她开了一个serverSocket,B那一端是由A分配的Socket,B可以自由地读进写出,但是A这边我就迷糊了,serverSocketh和Socket毕竟不一样,没有getinputStream什么的,他怎么把数据读进来并且显示出来呢?我不知道是不是serverSocket里面有些method我还不知道,查了一下doc,也没有找到合适的method。或者有别的socket类型可以完成这个?或者我这个思路有问题?还是代码写得有问题?

唉,迷茫了好几天了,希望可以在这里得到高人的点化!谢过了谢过了!:)

我的email:flysing@sohu.com,欢迎大家给我建议,或者在这里回复。:)

2003-12-03 16:36

如果你使用的是非堵塞I/O,那么是否能读取数据,是依赖NIO的触发机制,而且NIO需要你程序设定当前是读状态还是写状态,关于NIO机制需要多研究一下。

也可以参考我的"Java实用系统开发指南"的第一章。

2003-12-19 09:37

首先提出个问题,如果A或者B使用局域网、防火墙什么的,这种设计就不行了

其次,serverSocket只负责端口桢听,当B连上这个端口的时候可以生成一个Socket对象,就这样

2004-03-08 08:56

现在不是有一个XML的技术吗,好像java中对xml也有很好的支持,xml可以“穿过“防火墙

2004-03-08 17:02

兄弟,给点专业精神,什么叫xml可以穿越防火墙呀
你说的的大概是webservice、soap或xml-rpc,这些技术用http协议来传输
xml,而一般的公司的防火墙是不会关80端口的,所以可以穿越防火墙

所以A和B聊天,最好A和B都开一个Socket端口在监听,收到消息之后直接向对方的的监听端口发回复。
如果A和B都开80端口,一样可以过一般的防火墙

2Go 1 2 下一页

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com