我在杭州,不过我说LZ干吗不用公开的标准协议?比如用FTP或者HTTP。不用标准的协议,很多时候难以通过防火墙的,这是我的经验之谈。我有现成的HTTP、FTP上传下载代码(异步、同步皆可)。其实,用idHTTP和idFTP不就解决了吗?服务器端程序都不用写。省事的不是一点点。

解决方案 »

  1.   

    控制命令上行用HTTP,下发,让客户端用HTTP轮询就可以了,都是这么搞的。呵呵,这种方式开销最小了,服务器端程序也好写,也不局限于windows服务器了,什么服务器都能用,随便用脚本语言就能搞个服务器程序出来鸟。而且穿越防火墙的能力不是一般的高。当然对于即时通讯来说可能不适合,其实啊,完全适合的,呵呵,很多人觉得轮询会慢,其实不慢的。如果企业内部使用的,你半秒钟轮询一次,服务器都吃得消。如果不是即时通讯,而是非时间敏感的数据传送,这个最好了。而且效率最高了。如果是,游戏,就可以用HTTP长连接方式,就不需要轮询了,一直保持TCP的连接,模型还是客户\服务器模型,可以开2个HTTP通道,一个用于上行,一个用于服务器向客户端主动下行数据(无限长的HTTP报文)貌似MSN就是如此的。
      

  2.   

    对于HTTP长连接来说,早期apache服务器是不适合的,它适合于短促连接,他会一个连接保持一个unix进程,长连接时非常消耗内存。但是,后来的apache使用了线程模型,效率有所提高,实际上仍然达不到很高的水准。使用线程最牛的应该是windows和IIS。他对于这种长连接的处理最好了。而且线程重用能力很强,只要有阻塞就能重用,这就是windows很棒的地方。上面所说的游戏,指棋牌类的游戏,对于魔兽这样的游戏来说,用HTTP协议显得太不节省了。