目前问题如下:【1】我使用filestream将文件一块一块的读到byte数组中,然后发送。代码如下:
state.fs = new FileStream(aa,FileMode.Open,FileAccess.Read);
FileSize = state.fs.Read(xx, 0, xx.Length);
然后发送xx字节数组,可是有时总出现这个异常“不能访问已关闭的文件”,这是怎么回事??虽然我有fs.close,但是都在整个发送完毕后,才关的亚。【2】接收方也遇到这个问题,就是在分块接收时候,出现“不能访问已关闭的文件”【3】我在接收文本、WORD、图片格式文件都没有问题。可是在接收音频文件时,有个别文件在接手后,播放过程中有错位现象。这是怎么回事?以上三个问题,盼复。。谢谢。。急
state.fs = new FileStream(aa,FileMode.Open,FileAccess.Read);
FileSize = state.fs.Read(xx, 0, xx.Length);
然后发送xx字节数组,可是有时总出现这个异常“不能访问已关闭的文件”,这是怎么回事??虽然我有fs.close,但是都在整个发送完毕后,才关的亚。【2】接收方也遇到这个问题,就是在分块接收时候,出现“不能访问已关闭的文件”【3】我在接收文本、WORD、图片格式文件都没有问题。可是在接收音频文件时,有个别文件在接手后,播放过程中有错位现象。这是怎么回事?以上三个问题,盼复。。谢谢。。急
----------
你能保证每次都能读入 xx.Length长度的数据到xx数组吗,万一要读取的数据长度小于xx.Length呢,不是要错了吗
do
{}
while(totalFileSize>CurrentFileSize)
写的,每次读完都让currentFileSize加上这次读取数写这块,我也是有CurrentFileSize和TotalFileSize每次收完都让CurrentFileSize加上这次收取的大小数。不知这么做是否正确。还有你说的“有可能这两个文件刚好读完呀"是不是我上面的做法已经可以解决了?
state.fs = new FileStream(aa,FileMode.Open,FileAccess.Read);
FileSize = state.fs.Read(xx, 0, xx.Length);
中的xx字节数组的维数,我已经通过增加CurrentFileSize的方法计算出来了。目前问题在于,有时传个别的音频文件或出现错位播放或卡的问题。这个问题出现在局域网中两台机子。如果在一台机子上测试则没有问题。不知是不是由于传输造成的。你发给我的程序,我看了一下。有些地方和我的思路不大一样。不过给了我许多启发。再次感谢你。如果方便。能否给我留下QQ,以后经常交流。
2、如果是传输造成的你可以在两次发送之间停顿10ms试试,另外你的数据包大小是多大,尽量不要太大