要实现功能是获得两个相机的数据帧然后发送到接收端,实现实时观看
发送端代码
newSocket.Send(BitConverter.GetBytes(buffer.Length));//发送文件长度
newSocket.Send(totalbuffer); //发送第一个相机的图像帧
newSocket.Send(BitConverter.GetBytes(siltotalbuffer.Length)); //发送文件长度
newSocket.Send(siltotalbuffer);//发送第二个相机的图像帧
接收端
byte[] bufferSize = new byte[8];
byte[] silbufferSize = new byte[8];
int byteCount = socket.Receive(bufferSize);//接受第一个文件大小
long length = BitConverter.ToInt64(bufferSize, 0);
byte[] totalbuffer = new byte[length];
socket.Receive(totalbuffer); //接受第一个文件到byte数组
int silbyteCount = socket.Receive(silbufferSize);//接受第二个文件大小
long sillength = BitConverter.ToInt64(silbufferSize, 0);
byte[] siltotalbuffer = new byte[sillength];
socket.Receive(siltotalbuffer);//接受第二个文件到byte数组
都是在while(true)循环里面,可是接收到的数据很多时候不对,比如文件大小经常大的离谱,请问哪位知道是哪的问题?
发送端代码
newSocket.Send(BitConverter.GetBytes(buffer.Length));//发送文件长度
newSocket.Send(totalbuffer); //发送第一个相机的图像帧
newSocket.Send(BitConverter.GetBytes(siltotalbuffer.Length)); //发送文件长度
newSocket.Send(siltotalbuffer);//发送第二个相机的图像帧
接收端
byte[] bufferSize = new byte[8];
byte[] silbufferSize = new byte[8];
int byteCount = socket.Receive(bufferSize);//接受第一个文件大小
long length = BitConverter.ToInt64(bufferSize, 0);
byte[] totalbuffer = new byte[length];
socket.Receive(totalbuffer); //接受第一个文件到byte数组
int silbyteCount = socket.Receive(silbufferSize);//接受第二个文件大小
long sillength = BitConverter.ToInt64(silbufferSize, 0);
byte[] siltotalbuffer = new byte[sillength];
socket.Receive(siltotalbuffer);//接受第二个文件到byte数组
都是在while(true)循环里面,可是接收到的数据很多时候不对,比如文件大小经常大的离谱,请问哪位知道是哪的问题?
2、把长度数据直接添加在文件的前面整体发送,可能接收到文件的次序不同,但不会发生错误。
比如检查buffer.Length是不是long型的。byteCount是不是和你定义的数组大小一样。
length 是不是和你的那个数组大小一至。