请教:几个关于SOCKET编程的问题
white 2000-07-24 10:43:00 问题一:防火墙后的通信问题。在一个点对点通信的软件中,到底
如何处理防火墙问题较好呢?大家知道,ICQ由于在这上面仅仅支持
SOCKET4和SOCKET5代理服务器,而不能在中国的169网中使用,从
而失去了一大批用户,而OICQ则很好地解决了这个问题,有谁知道
OICQ的做法,或者有更好的做法呢?
问题二:服务器的效率问题。实现SOCKET的服务器端有很多种做法
比如只用一个SOCKET,处理完一个请求再处理下一个请求,或者
每接到一个请求就新开一个SOCKET,用新开的SOCKET去完成任务,
而旧的SOCKET继续侦听新的连接请求,但要求使用非阻塞式。
还有有新请求就开一个新线程,用新线程去处理任务,原来的主线
程继续侦听,使用阻塞式SOCKET。第一种方法
当然不可能用了,那么第二种和第三种,哪种效率更高呢?
第二种中需要维护一个SOCKET列表,数据到达时还需要判断是哪
个SOCKET的数据,而使用多线程后,虽然编程上简化了,但是系统
需要额外的线程切换开销。在超大容量连接请求时,到底孰优孰劣,
还请各位专家指点。