当前位置:  技术问答>linux和unix

一个简单的linux课程设计--《基于socket聊天室的设计与实现》 帮忙分析下~

    来源: 互联网  发布时间:2017-02-25

    本文导语:  临近期末了,要做linux课程设计。 题目和要求如下: 现要求编写一个基于Linux平台C语言程序,使用Linux Socket,多进程或线程等技术编写一个聊天程序。每个客户程序通过服务器发送聊天信息给聊天时的(已经登录连...

临近期末了,要做linux课程设计。
题目和要求如下:
现要求编写一个基于Linux平台C语言程序,使用Linux Socket,多进程或线程等技术编写一个聊天程序。每个客户程序通过服务器发送聊天信息给聊天时的(已经登录连接)所有人或某个人。
    基本功能:每个客户程序通过服务器发送聊天信息给聊天时的所有人。
    扩展功能:①接收用户输入或显示聊天消息方式为图形化界面;②支持对没有登录的聊天室成员发送聊天记录;③支持查找历史聊天纪录;
----------------
以上是老师给出的原封不动的要求
这个课程设计不难,功能不要求多,但是有些方面不是很明白,感觉想做的好点也不容易~
以下是我的打算
1.界面用QT去做(qt尚不熟悉,打算临时学几手,做出个界面应该不成问题),但是多线程和网络这两块必须是直接调linux的api,否则也就不叫linux课程设计了。
2.服务端是做成一个单独的程序(运行时,先启动服务端,然后客户端之间才能通信,必须依赖于固定的服务端),还是服务端和客户端集成在一起(启动时,若发现当前局域网不存在服务器就自己启动一个服务器,若存在,就直接连接服务器)?我更倾向于后者,因为这个小程序的服务端肯定不会太庞大,服务端和客户端集成在一起比较灵活~
3.支持群聊和私聊,群聊的话,消息经过服务器转发,服务器和客户端都保存聊天记录,。私聊就两个客户端直接通信,聊天记录只保存在本地。
4.对没有登录的成员发送聊天记录,这个应该比较简单,客户端上线后,服务器直接将保存在群聊记录发给它。
5.查找历史聊天记录,这个就暂时直接读取本地保存的聊天记录吧
------------
基于以上打算,会产生以下问题,该如何解决?
首先是第2点,服务端和客户端集成在一起,如果当前是服务器的那个用户退出了(或者程序意外终止)怎么办?整个系统的运行必须要有服务端的支持才行的。可以考虑这个时候按照一个协议在其余的用户中协商出一个用户作为服务端。。。不过感觉这样,整个系统的复杂度就大大增了,而且原先的服务器上保存的群聊记录就不能使用了~对于要求中的第二点的实现又会产生影响!
还有就是,飞秋,飞鸽传输之类局域网聊天软件是如何实现的?以前自己在windows上写过类似于这个课程设计的小程序,客户端上线后直接向指定的端口广播UDP消息,其它客户端应答,这样就能构建一个当前在线用户的列表,然后每个客户端就能直接通信,不要服务端的存在。但是如果在用户很多的情况下,感觉通过这样的方式来构建和更新在线用户列表太得不偿失了~,通过服务端来维护在线用户列表更实际些。
如果服务端作为一个单独的程序运行的话,上面的大部分问题可轻松解决,但是。。。。我想让程序更灵活,不依赖于固定的服务器就能使用。
-------------
最后,有木有一些合适的源码推荐给我参考下的~

|
不要傻拉,要有一个独立的服务端的拉,像QQ也是啊,我们要给好友发送的消息都是先发给服务端的,再通过服务端发送给你的好友...开发软件就得这样啊,类似这类的软件就要追求服务端多做点事,客户端的压力少点,也就是用户用起来简单点,程序小点  负担小点....而且说真的,开发起来也比较方便啊,思路比较清晰...
不依赖于固定服务器就能使用,并没有比较灵活拉,而且安全性不好...你说的内容很多,我没全部看完,一点点个人见解而已,仅供参考.

|
先做一个能打印出客户端信息的模型出来吧,再谈 界面版本的。
我想的是,需要服务器和客户端两部分,服务器socket接收客户端的udp数据报,然后打印出来。
至于客户端自己输入的信息如何回显给自己的,还得再想想  呵呵

|
   我也在做这个东西,但是比楼主的要求简单多了,只是能完成两台主机之间的图形界面通信就行。现在我写的UDP程序能够在终端上正常通信。GTK也学了点,但是目前来说我遇到的问题是,怎样能在图形界面上聊天,关键技术是什么?
    还希望能有人给指点一下~

|
只在window上玩过 通信

|
xmpp协议,开源的im很多

|
IM 很好啊

    
 
 

您可能感兴趣的文章:

  • 一个老程序员的观点:Linux程序/内核设计是一门技术,Windows下的可扩展、可复用架构设计是一门艺术!
  • 求gnu/linux编程指南,linux程序设计二本书
  • 毕业设计开题了:基于linux的个人防火墙的设计于实现,给点建议
  • linux 毕业设计求解答
  • 请推荐几本经典的linux下程序设计的书籍~
  • java开发知识 iis7站长之家
  • linux网络编程(UDP多播)如何实现Observer设计模式?
  • 想要在linux下做个毕业设计,大家给推荐个题目吧
  • 求关于 Linux 和 windows 设计思想区别 的原文
  • 跟LINUX相关的毕业设计
  • 设计一个Linux的存储策略,求思路
  • 初学linux,请问《Unix环境高级编程》和《Linux程序设计》哪本书比较适合先看?
  • 初学linux程序设计的问题
  • linux下有什么好用的数据库设计工具?
  • 请问谁有<linux 程序设计(第二版)>的中文版
  • 请问谁有LINUX内核设计与实现第三版的电子书?
  • linux中大量的全局变量怎么体现结构化的程序设计?
  • 去深圳书城竟然买不带《linux程序设计》
  • 《linux网络系统架构设计与实现》谁有中文版的给我一份
  • 《linux程序设计》中的一个问题
  • Linux下怎么上语音聊天室~!?
  • linux聊天室程序//求改错
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux!我来了------我是新人,还请大家多多帮忙
  • 装linux遇到问题,有高手在线帮忙吗?请发信息给我
  • 各位,帮忙推荐几本深入学习Linux的书!!!
  • 请问想学linux,请帮忙推荐一本好书?
  • 关于linux裁剪内核,越小越好。大家多多帮忙。
  • 我的linux声卡装不上,达人帮忙!
  • linux下的串口编程比较熟悉,麻烦帮忙!
  • 高手帮忙!linux初次安装的问题?
  • 高手们快来帮帮忙啊,,好郁闷!!!LINUX 9.0装不上的问题!
  • 帮忙推荐一本linux编程的好书!!!
  • 大家帮忙,推荐个好版本的Linux
  • 急!高手帮忙!cximage库在Linux下运行使用的问题。
  • 帮忙推荐个linux
  • linux的网络访问?请帮忙!
  • ★★★在linux下编译pro*c文件,提示"sqlcxt"没有定义,哪位高手帮忙,定赠分!
  • 急!大家帮帮忙!有哪些视频点播系统能在在LINUX下安装以及怎样安装!
  • 急!大家帮帮忙!有什么视频点播系统能在LINUX下安装,以及怎样安装!!
  • 请各位帮忙推荐几本Linux多进程编程的好书
  • 升级Linux的问题,急!请高手帮忙!
  • Linux学习,高手帮忙
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3