Winsock1.LocalPort=4000   
这个4000的确是随意的,但是它必须得是空闲状态,否则程序会出错,所以下面的2000和2500是不一样,它们如果是一个值,那么第2个将失败,而且这个端口是针对整台计算机来说的,你如果启动两个实例,第2个实例将会失败。还有,就是你现在用的是TCP协议,也就是基于长连接的(逻辑上),所以一次只能连接一个客户,这也就是
if Winsock1.State<>0 then Winsock1.close    这么写的原因,winsock1.state如果是0,说明这个socket空闲,否则就是处于连接或是其他非空状态,无法再用于连接,所以就把它关闭来接受新的连接要求