这是个.NET问题。可是听说Java网络功能更强。所以希望在这里找到更好的思路。
我把Socket的连接建成了数组。可是Socket连接进来后,我怎么把他分到某个线程,让他去侦听呢?谢谢!
Socket acceptSocket=myListen.AcceptSocket();
flashSocket[socketID]=acceptSocket;
//线程执行
subThread=new Thread(new ThreadStart(AcceptFlash));
subThread.Name="My" + threadID++;
subThread.Start();//开始此线程的执行
private void AcceptFlash()
{
//建立内部socket实例
Socket receiveSocket=flashSocket[socketID];
string endPointForClear=receiveSocket.RemoteEndPoint.ToString();
bool keepAlive=true;
string theTemp="";
//开始此实例的循环接受数据
while (keepAlive)
{
}

解决方案 »

  1.   

    你的标题是让一个线程侦听100个Socket连接而你的需求是多个线程侦听多个Socket连接你能不能把意思明确一下?除了主线程,你准备开几个线程?如果开一个while里的逻辑持续时间是多少?
      

  2.   

    //线程执行
    if(socketID>100)
    {
    threadID++;
    subThread=new Thread(new ThreadStart(AcceptFlash));
    subThread.Name="My" + threadID;
    subThread.Start();//开始此线程的执行
    }
    else
    {

    }
    假如象上面,当SocketID>100的时候开启一个新的线程。那么怎么控制这个新的线程去侦听100-200之间的Socket连接呢?
      

  3.   

    除了一个主线程之外,每100个Socket连接进来,都开一个新的线程。就是每个线程侦听100个连接。
      

  4.   

    那么怎么控制这个新的线程去侦听100-200之间的Socket连接呢?取100的模就可以了。而且要在线程里新建队列。
      

  5.   

    而且要在线程里新建队列。   新建队列是什么意思呢?   取100的模倒好控制,主要是怎么让每个线程去侦听属于他的那100个Socket。
      

  6.   

    主要是怎么让每个线程去侦听属于他的那100个Socket。
    -------当然,所以才叫你在线程里新建队列,说了还得说。
      

  7.   

    谢谢! gemouzhi(gemouzhi) 请问如何新建队列,并达到控制的效果。。能简单说一下吗?
      

  8.   

    从大队列里复制100个对象 到 线程小队列。只是对象复制问题。如何达到控制的效果?我早就问你了,你没回while里的每个socket的逻辑持续时间是多少?
      

  9.   

    while里的每个socket的逻辑持续时间是多少???我没有设置持续时间
      

  10.   

    之所以问你,是保证你的设计没问题。我的意思是:线程里控制100个socket没问题,用iterator把每个历遍就可以控制了。但是如果你对每个socket处理时间过长,就会有设计上的问题。所以我问你“while里的每个socket的逻辑持续时间是多少”
      

  11.   

    哦,那算了。你不是问如何控制吗?线程的小队列浅复制100之后,用iterator把每个历遍就可以控制了。别管我问的了
      

  12.   

    你还不如用.NET写,因为.NET的线程控制更容易一些。比如你用Monitor直接监视那个大队列也是可以的。
      

  13.   

    哥们这样可不可以呀!
    根据线程的ID,threadID是1,那么就侦听第1到第threadID*100-1.   private void AcceptFlash()
    {
    //建立内部socket实例
    Socket receiveSocket=flashSocket[socketID]; while (keepAlive)
    {
                                   for(int i=0;i<threadID*100;i++){
                                                //处理socket[i]
                                            }
                                }
    }
      

  14.   

    当然不可以。i=0这里不可以,应该是i = (i-1)*100我理解你的意思.另外我不是哥们,我是美女^_^
      

  15.   

    当然不可以。i=0这里不可以,应该是i = (threadID-1)*100我理解你的意思.另外我不是哥们,我是美女^_^