在一个IP:Port建立多个连接和启动监听

1. Socket Handle和地址对

    一个socket handle对应srcIP:srcPort&destIP:destPort

    在同一个地址上建立多个连接,像下面的实例:

    ip1:port1 --> ip5:port5

    ip1:port1 --> ip6:port6

 

    接着在这个地址上创建监听socket,

    ip1:port1 --> *:*  对应所有的ip&port。

 

2. Herm的实现代码

      在同一个地址上创建多个socket handles,关键在于SO_REUSEADDR这个Socket层级别的选项,通过setsocketopt将这个选项打开,就可以在同一个地址创建多种socket handles。

      Herm的Socket 组件中的Connector&Acceptor支持在同一个地址上创建多个连接和多个监听。

 

      先在ip1:port1上创建到ip5:port5的连接:

        

      上面s对象对应:ip1:port1-->ip5:port5.

 

      继续在ip1:port1创建到ip6:port6的连接,代码和上面差不多:

     

 

      两个连接创建完成。可以用s.Send(...)&s2.Send(...)向两个tcp server发送数据。

 

      最后,我们还要在ip1:port1上启动监听,接受外部的连接.

     

 

      得到一个连接后,接收一些数据。

 

      甚至在同一个地址上可以启动多个监听,但感觉有点乱,实际中应该用不到。

 

 

posted on 2010-12-13 17:07  daemonh  阅读(372)  评论(0编辑  收藏  举报

导航