我在本地用socket打开了一个端口,如果有50个外部连接进来。我如何有效的区分开这些连接,并把信息发到指定的客户。

解决方案 »

  1.   

    Socket连接的实际过程实际上是这样的:(假设现在Socket服务就如接待台,80号台也就是80端口)首先,IIS服务部会常驻在80号台,这个服务部能够派出无限的服务接待员(我假设你的内存是无限的)。然后客人来了,客人当然只认80号台,于是他走过去,和服务接待员“握手”(Connect)。然后服务员“接待”(AcceptConnection)了这位客人,并且把他带至任何一张空的台开始谈生意,直到任何一方主动“离开”(Disconnect)。但这实际上已经与80号台无关。当然,你的内存是有限的,台(端口)也是有限的(65536),而且还有不少台号是一早就被别的服务占据掉用来作为它的“接待处”的。不知道楼主是否明白我的比喻。反正,你Listen哪个端口都好,仅仅是Listen,但你AcceptConnection的时候,实际上大多数程序都是选择用一个随机的空端口来接受这个Connection的,个别情况例外。
      

  2.   

    你建立一下连接,再使用netstat -a看实际使用端口情况
      

  3.   

    每个连接进来,放到一个Arraylist容器里面,加上标识就OK了