TO: Yousjj(喵喵猫) ( ) 信誉:100 我目前没有使用CRC效验,等基本功能完成以后再使用CRC.TO:oyljerry(【勇敢的心】→ ㊣Pray For her√㊣)这个问题我已经解决了,我是封装了一个queue队列,里面使用了临界区对象进行互锁.我现在又把服务端改了一下,现在使用了事件模型,把收数据和发数据放到了一个线程来完成.另一个线程则是处理数据.
调试欢乐多
业务线程可以多几个,2 - 8个应该够用了。只一个业务线程恐怕响应速度会太慢
windoze服务器的话用重叠IO效率可以稍微提高一点,如果是linux服务器建议使用poll或者epoll
http://community.csdn.net/Expert/topic/4428/4428750.xml?temp=.4422724
这样每次都必须收一个完整包.假设我的数据包类似与
struct packet
{
int len ;
char * data;
}
data的长度是由len指定,但是我的目的每次要先读长度,再将数据收到我需要的位置(每次
不一样).
按照UDP每次必须收一个包这样下来,我必须把数据先收到UDP的缓存再拷贝到我需要的目的
地,而不能像TCP那样直接收到我需要的位置.数据量大的时候拷贝效率不是非常低吗?请教
附:我的udp 端口有很多类型的包,而且通信的对象也有很多
---------------------
UDP不是流协议 要么全部接收一个完整的包 要么一点也接收不到
------------------
同感 UDP没必要用IOCP模式 直接用阻塞的就行 最重要的是数据接收和数据处理分开