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

求C语言做聊天服务器思路

    来源: 互联网  发布时间:2016-03-24

    本文导语:  我想用Linux C做聊天服务器。目前实现的思路如下: 服务器:socket->bind->listen->accept->fork->在自进程中将客户端1的clientsocket1保存入共享内存中。 当第二个用户以同样方法登陆后,想往第一个用户发送信息,但好像client...

我想用Linux C做聊天服务器。目前实现的思路如下:
服务器:socket->bind->listen->accept->fork->在自进程中将客户端1的clientsocket1保存入共享内存中。
当第二个用户以同样方法登陆后,想往第一个用户发送信息,但好像clientsocket1不能这样保存在共享内存中,直接用客户端1的clientsocket发送信息给客户端1无效。

请问做过聊天方面的大侠,如何解决多进程的socket描述符传递问题?我不想用unix socket那些,感觉太麻烦了。

|
为什么不用线程呢?
而且象聊天的这样程序一般选择的是UDP
协议。用来保证速度。

|
可以。可以用一个数组来存储。

|
个人觉得服务器不应该保存对客户断的socket描述符,客户端连接服务器并请求服务,之后连接就应该断开。如果连接一直保持的话,将占用很多系统资源,并且系统的文件描述符的数量是有最大限制的。服务器应该保存的是客户断的IP地址信息,并且,客户端也要充当服务器在另一客户端通过服务器转发的请求时使用,这时,服务器又充当了客户端。简而言之,每一端都有双重身份(客户端,服务器)。纯属个人观点,本人也未做过这样的程序。

|
提供个思路算法,用多线程比多进程好,线程可以共享数据,进程要共享数据的需要开辟共享内存,所有的客户连接都必须通过服务器,即使用户1向用户2发送一条消息,该消息是先发到服务器,然后服务器找到用户2的socket,发送过去,以上方法都是建立在TCP连接的方法上的,需要建立一条SOCKET,如果使用UDP,只要知道对方IP就可以,双方都用SELECT方法等待消息就可以。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 2013年7月和2013年8月编程语言排行榜
  • 如何在GTK2.0下实现国际化(语言选择根据自己设置的语言,不用系统的语言)
  • 2017 年热门编程语言排行榜出炉,你的语言上榜没?
  • C语言中有指针,因此C语言可以创建链表,那么Java语言没有指针,那Java是否可以创建链表呢?
  • 苹果OS X和IOS下最新编程语言swift介绍
  • 求助,在linux下,c语言和汇编语言的接口是什么?
  • c语言判断某一年是否为闰年的各种实现程序代码
  • C语言中间语言 CIL
  • PHP编程语言介绍及安装测试方法
  • 最近学JSP,苦于HTML语言和JAVA语言太差,请教推荐几本书,thanks.
  • Linux下C语言strstr()查找子字符串位置函数详细介绍(strstr原型、实现及用法)
  • 动态编程语言 LIME编程语言
  • c语言实现MD5算法完整代码示例
  • C语言如何改变当前语言环境
  • 以NetBeans IDE为例介绍如何使用XML中Schema语言
  • 如何在VIM中使汇编语言和C语言自动缩进?
  • c语言基于libpcap实现一个抓包程序过程
  • 我安装的linux时默认语言选择的是中文,又乱码,怎么可以解决?怎么更改默认语言成英文?
  • HTML超文本标记语言教程及实例
  • Redhat9安装时语言只选择了中文,现在还能再增加其它语言的支持吗?如英文
  • MD5算法的C语言实现
  • 请问哪里有ubuntu 9.0版本的中文语言包和KDE的中文语言包下载,我用Google搜索了很多地方都没有!


  • 站内导航:


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

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

    浙ICP备11055608号-3