最近在写多连接发送多媒体流的过种中,先拿传文件做实验,其实有区别:
1.文件写是可以乱序的,没有排序的问题,多媒体流要排序后才能实时观看.
2.说明一下,多连接!=多线程,标题是方便别人查找^___^
我是这样做的
1.定义一结构,声明一变量A.主要是文件唯一的读流标,这里有个locker,整个代码就这个锁
2.每个发送连接共享"读"打开一个FILE* f,locker让系统去处理吧
3.每个连接的onSend中先从A取读流标,同时更新读流标,然后fread,send(buf,readpos,len)
即把读取游标、长度和数据一并发出.
4.每个接收连接共享"写"打开一个FILE* f,收到数据后,fseek(f,SEEK_SET),fwrite(f,buf,len);
locker让系统去处理吧
说明几点
1.写完后在windows下跑过,OK,linux下还没跑过.
2.测试过比单连接快N多(没白写),buf的大小最好适中,连接数也要适中.
3.如果照搬原理的话,可能会很伤硬盘(没做缓存)^___^.
4.为什么不用IOCP读写文件,原因:linux和代码量