| 发表于:2007-01-05 22:11:53 楼主 |
我做的是异步socket服务器端。大致代码如下: private void form_load() { 获取服务器ip和监听端口 启动监听线程 } private void listening() { while(true) { lisdone.rest(); mysocket.beginaccept(调用异步监听回调函数); lisdone.waitone(); } } private void acceptcallback()//异步回调函数 { 为当前链接客户启动接收线程(只要有客户链接就为这个客户启动一个线程) } private void receivedata() { while(true) { try { receivedone.rest(); mysocket.beginreceive(调用接收回调函数) receivedoen.waitone(); } catch { mysocket.shutdown(shutdown.receive); mysocket.close(); return; } } } private void receivecallback() { receivedone.set(); 接收数据 } 以上就是大致我做的socket服务器端从客户链接到接收客户数据的过程。现在我有个问题是 我现在的方法为只要有客户链接。就在监听回调函数中为这个客户建立一个接收此客户的线程。此程序也可以正常接收。但是当这个客户中途退出后,我的程序占用cpu就猛增到100.请问这是怎么回事??当链接客户端突出后,我应该怎样释放这个客户的链接对象?这个客户链接上来后建立的线程如何释放?? 谢谢,盼复。。。 |
|
|
|
|