本人写了一个UDP的客户端与服务器程序,服务器端使用一段时间后,发现不能再接收数据。开使认为是不是并发原因造成的,但根据UDP的原理,并发不应该堵死,于是我用一个办法测试了一下:
1、服务器端只接收数据,不对数据做任何处理
2、客户端每10个MS向服务器发送一条数据,并同时开启了40个客户端。
测试结果,没有被堵死,服务器运行正常。于是我在想是不是我的服务器端接到数据后在处理数据造成的,因为我在程序里有对数据库进行操作,所以会不会是这个原因,请碰到过类似情况的高手们指点一二。
1、服务器端只接收数据,不对数据做任何处理
2、客户端每10个MS向服务器发送一条数据,并同时开启了40个客户端。
测试结果,没有被堵死,服务器运行正常。于是我在想是不是我的服务器端接到数据后在处理数据造成的,因为我在程序里有对数据库进行操作,所以会不会是这个原因,请碰到过类似情况的高手们指点一二。
请教高手能不能说明这个过程中,影响UDP不能接收的关键原因,做个分析,谢谢
最好是收到数据后立即缓存起来,另外有个线程从缓存取数据处理,而接收数据的过程专心接收数据,其他什么事也不干。
我同意zohan的分析。接收数据的线程,只能接收数据,处理一个数据另开一个线程。处理完后要释放。估计你的程序中处理数据的线程有漏洞,有的能释放线程,数据异常时,陷入死循环,不能释放线程。时间常了,计算机资源耗尽就玩完了。