这是个.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)
{
}
我把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)
{
}
if(socketID>100)
{
threadID++;
subThread=new Thread(new ThreadStart(AcceptFlash));
subThread.Name="My" + threadID;
subThread.Start();//开始此线程的执行
}
else
{
}
假如象上面,当SocketID>100的时候开启一个新的线程。那么怎么控制这个新的线程去侦听100-200之间的Socket连接呢?
-------当然,所以才叫你在线程里新建队列,说了还得说。
根据线程的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]
}
}
}