想开发一个即时通讯软件,考虑了很久不知要使用TCP还是UDP,主要存在以下几个疑问:1。要用服务器中转好还是点对点好?2。使用TCP长连接还是短连接?
长连接的话太费资源,短连接的话每次连接都要三次握手3。如果有多台服务器,那么不同服务器的用户如何获取不同服务器用户的状态?4。使用UDP的话发送消息可能会收不到,如何解决?请大家给个意见。谢谢。

解决方案 »

  1.   

    TCP,UDP都行啊,为了减轻服务器的压力最好使用UDP协议,如果使用TCP就用长连接
      

  2.   

    听说QQ的服务器N多,好几百平方的房间里都是服务器。
    有1亿的用户同时在线,QQ怎么做的,都用TCP长连接吗? 啥概念啊。
      

  3.   

    每一个消息,都会有一个编号。
    采用UDP协议,
    发送一个消息包,要接收端配送一个编号相同的应答包回来就行。
    当然,可以采用超时重发,连续3次无应答,则整个发送事件失败。TCP推荐采用短连接,这样,编程复杂度会降低。至于服务端是否转发,要看,服务端是否要做相关的记录、统计工作,如果没有这方面要求就不要转发。如果消息不转发的话,两个客户端和服务端,三者之间,要实现“打孔”技术(无论TCP和UDP都应该实现)。推荐服务端转发,编程复杂度可能会降低。
      

  4.   

    如果想开发一个即时通讯软件,建议使用Apache MINA!!
      

  5.   

    udp注重的是效率。丢失概的率还是很小的。一般的即时通讯都是基于udp。
    tcp注重的是质量。--
    看你自己的选择了。
      

  6.   

    腾讯的那个要经过服务器的吧,要不查看聊天记录怎么查啊,还有腾讯里的语音和视频时UDP传的。不过邀请的时候是TCP。点对点的话看你自己喜好了。可以架设一个没有服务器的,如netmeeting。
      

  7.   


    现在我是用MINA来实现了,感觉还是不错的。MINA只是实现客户端与服务端保持在线状态,而发消息是采用TCP还是UDP还未决定。