LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1781|回复: 18

[请教]在为公司做个即时通讯软件,不知道如何开始做

[复制链接]
发表于 2005-4-3 19:17:27 | 显示全部楼层 |阅读模式
目的:在为公司做个即时通讯软件。现在只有初步想法,不知道怎么开始做,请各位老大指点。

想法:希望把这个平台做成跨平台,多线程处理。服务器端在LINUX上,用JAVA和C开发。客户端有C\C++和WEB开发不同的界面。根据数据流分层,各曾分离来开发,为别的层提供接口。

现在,在考虑通过服务器端的实现,客户端应该很好解决,提供接口讲字符串发给客户端来显示就OK,不需要很多逻辑。有点像手机短信。主要的逻辑运算在服务器端。

程序块1:负责处理并发线程,接收客户端的请求,建立连接,发送串到缓冲,断开连接。发送成功!JAVA实现
程序块2:负责建立一个容器来存放分发消息,做缓冲。保存成功!JAVA实现
程序块3:负责并发线程建立连接,发送串到客户,断开连接。接收成功!JAVA实现
程序块4:负责管理服务器,建帐户规则,控制缓冲区大小和运行方式,支持群发等等。JAVA and VC++实现。
 楼主| 发表于 2005-4-4 11:48:31 | 显示全部楼层
怎么没人说话呢?
回复 支持 反对

使用道具 举报

发表于 2005-4-4 12:00:42 | 显示全部楼层
用户量大了还是UDP的来好。
服务器端压力小。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-4 13:27:35 | 显示全部楼层
楼上讲的是协议,意见不错!

现在的要解决:
1。服务器端的java代码架构一般该怎么写呢?
2。这样监听端口的多线程程序该怎么开始写?
3。其他的慢慢解决。
回复 支持 反对

使用道具 举报

发表于 2005-4-4 13:34:55 | 显示全部楼层
仅供参考:)


    udp消息包处理流程:
    --主线程--------启动监听进程-------------处理命令(包括启动、停止、退出、帮助,发送系统广播等)-----------如果接收到退出命令关闭服务器退出
                       |
                       |         |---------------------------------------------------|
                       |         ↓                                           |
                       |-----监听进程开始监听-------有数据包到来----处理消息包------|
                                                                  
                                                                    
    tcp服务处理流程:
    --主线程--------启动监听进程-------------处理命令(包括启动、停止、退出、帮助,发送系统广播等)-----------如果接收到退出命令关闭服务器退出
                       |
                       |         |-----------------------------------------------------|
                       |         ↓                                             |
                       |-----监听进程开始监听-------有数据包到来----启动处理进程------|
                                                                    |
                                                                    |
                                                                    |----处理消息包,处理完退出
回复 支持 反对

使用道具 举报

发表于 2005-4-4 13:35:50 | 显示全部楼层
<code>
udp消息包处理流程:
--主线程--------启动监听进程-------------处理命令(包括启动、停止、退出、帮助,发送系统广播等)-----------如果接收到退出命令关闭服务器退出
|
| |---------------------------------------------------|
| ↓ |
|-----监听进程开始监听-------有数据包到来----处理消息包------|


tcp服务处理流程:
--主线程--------启动监听进程-------------处理命令(包括启动、停止、退出、帮助,发送系统广播等)-----------如果接收到退出命令关闭服务器退出
|
| |-----------------------------------------------------|
| ↓ |
|-----监听进程开始监听-------有数据包到来----启动处理进程------|
|
|
|----处理消息包,处理完退出
</code>
回复 支持 反对

使用道具 举报

发表于 2005-4-4 13:37:52 | 显示全部楼层
  1. udp消息包处理流程:
  2. --主线程--------启动监听进程-------------处理命令(包括启动、停止、退出、帮助,发送系统广播等)-----------如果接收到退出命令关闭服务器退出
  3. |
  4. | |---------------------------------------------------|
  5. | ↓ |
  6. |-----监听进程开始监听-------有数据包到来----处理消息包------|


  7. tcp服务处理流程:
  8. --主线程--------启动监听进程-------------处理命令(包括启动、停止、退出、帮助,发送系统广播等)-----------如果接收到退出命令关闭服务器退出
  9. |
  10. | |-----------------------------------------------------|
  11. | ↓ |
  12. |-----监听进程开始监听-------有数据包到来----启动处理进程------|
  13. |
  14. |
  15. |----处理消息包,处理完退出
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-4 14:27:59 | 显示全部楼层
Post by zbw76
仅供参考:)


    udp消息包处理流程:
    --主线程--------启动监听进程-------------处理命令(包括启动、停止、退出、帮助,发送系统广播等)-----------如果接收到退出命令关闭服务器退出
                       |
                       |         |---------------------------------------------------|
                       |         ↓                                           |
                       |-----监听进程开始监听-------有数据包到来----处理消息包------|
                                                                  
                                                                    
    tcp服务处理流程:
    --主线程--------启动监听进程-------------处理命令(包括启动、停止、退出、帮助,发送系统广播等)-----------如果接收到退出命令关闭服务器退出
                       |
                       |         |-----------------------------------------------------|
                       |         ↓                                             |
                       |-----监听进程开始监听-------有数据包到来----启动处理进程------|
                                                                    |
                                                                    |
                                                                    |----处理消息包,处理完退出

非常感谢,这是基本消息处理,能不能讲讲一般象这样的JAVA程序怎么来组织代码呢?因为经验少,没有看过这样代码应该怎样组织,能不能贴个例子给讲解一下呢,将不胜感激。我希望程序的开发过程共享给大家,对象我这样接触不多的菜鸟们的学习会有帮助的,谢谢!
回复 支持 反对

使用道具 举报

发表于 2005-4-4 14:33:42 | 显示全部楼层
构架设计好后就是写代码的体力劳动了,这个应该很容易了,
比如可以把主程序组织成一个包,监听线程等网络部分组织成一个包
处理收发信息的内容作一个包,最重要的就是这第三个了,这个应该是
你的业务逻辑的主要实现部分,再详细就没有办法说了,再详细我就的把实现代码给你写出来了:)
那可是巨大的体力劳动:P
回复 支持 反对

使用道具 举报

发表于 2005-4-4 14:35:55 | 显示全部楼层
注意各个模块件最好用接口来互相引用,一定要避免直接交叉使用实现的类。
这样模块间的耦合行比较底,整个系统的复杂度就小多了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表