非常棒的例子(手把手教多线程):
http://www.cnblogs.com/gzcszzx/articles/2110675.html
采用Socket连接
所谓长连接,指在一个连接上可以连续发送多个
数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包。
短连接是指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。
长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况,。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,下次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接,如果用
短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。
而像WEB网站的http服务一般都用
短链接,因为长连接对于
服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用
短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。
总之,长连接和
短连接的选择要视情况而定。
KeepAlive
http://blog.sina.com.cn/s/blog_77691fb901012xsy.html
Socket讲解:
http://baike.baidu.com/link?url=Rmy-qQuY-oECjscaLW5s9ezLdUdVSmXXt-EtLZxRP7SqOfxPk9cqQY2yoWrR2WfL
socket的英文原义是“孔”或“插座”。作为4BDS UNIX的
进程通信机制,取后一种意思。通常也称作"
套接字",用于描述IP
地址和端口,是一个通信链的句柄。在Internet上的
主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,象一个多孔插座。一台
主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目。 客户软件将插头插到不同编号的插座,就可以得到不同的服务。
socket非常类似于
电话插座。以一个国家级电话网为例,
电话的通话双方相当于相互通信的2个进程,区号是它的
网络地址;区内一个单位的
交换机相当于一台
主机,主机分配给每个用户的局内号码相当于socket号。任何用户在通话之前,首先要占有一部电话机,相当于申请一个socket;同时要知道对方的号码,相当于对方有一个固定的socket。然后向对方拨号呼叫,相当于发出连接请求(假如对方不在同一区内,还要拨对方区号,相当于给出
网络地址)。假如对方在场并空闲(相当于通信的另一
主机开机且可以接受连接请求),拿起电话话筒,双方就可以正式通话,相当于连接成功。双方通话的过程,是一方向电话机发出信号和对方从电话机接收信号的过程,相当于向socket发送数据和从socket接收数据。通话结束后,一方挂起电话机相当于关闭socket,撤消连接。
详细看上面的链接吧~~~