500ms传一张1024*768的图片,传了几秒钟就出问题了,image.fromstream(data)出错是参数无效,查了查好像是图片的头文件没了不知道哪出的问题请高手指点传送端: byte[] file = null;
file = def.getdata();
byte[] result = BitConverter.GetBytes(file.Length);
int aa = BitConverter.ToInt32(result, 0);
socket.Send(result); int longer = file.Length;
int start = 0;
int mid = 0;
int count = socket.Send(file, start, longer, SocketFlags.None);
mid += count;
longer -= count;
while (longer != 0)
{
count = socket.Send(file, mid, longer, SocketFlags.None);
mid += count;
longer -= count;
}
接受端:
byte[] inum = new byte[4];
revSocket.Receive(inum);
int aa = BitConverter.ToInt32(inum, 0);
byte[] file = new byte[aa];
//revSocket.Receive(file); int longer = file.Length;
int start = 0;
int mid = 0;
int count = revSocket.Receive(file, start, longer, SocketFlags.None);
mid += count;
longer -= count;
while (longer != 0)
{
count = revSocket.Receive(file, mid, longer, SocketFlags.None);
mid += count;
longer -= count;
}
MemoryStream ms = new MemoryStream(file);
Image image = Image.FromStream(ms);//出错行 我想过可能是发送方的缓冲区出现问题,就是一方在读一方在写,同时进行,而且缓冲区满了导致头文件被挤没了,想问一下发送有缓冲区吗,是不是这得问题呢?还有这些缓冲区有锁吗?能不能清空,请高手指点,如果把sendbuffersize设为0会怎样
file = def.getdata();
byte[] result = BitConverter.GetBytes(file.Length);
int aa = BitConverter.ToInt32(result, 0);
socket.Send(result); int longer = file.Length;
int start = 0;
int mid = 0;
int count = socket.Send(file, start, longer, SocketFlags.None);
mid += count;
longer -= count;
while (longer != 0)
{
count = socket.Send(file, mid, longer, SocketFlags.None);
mid += count;
longer -= count;
}
接受端:
byte[] inum = new byte[4];
revSocket.Receive(inum);
int aa = BitConverter.ToInt32(inum, 0);
byte[] file = new byte[aa];
//revSocket.Receive(file); int longer = file.Length;
int start = 0;
int mid = 0;
int count = revSocket.Receive(file, start, longer, SocketFlags.None);
mid += count;
longer -= count;
while (longer != 0)
{
count = revSocket.Receive(file, mid, longer, SocketFlags.None);
mid += count;
longer -= count;
}
MemoryStream ms = new MemoryStream(file);
Image image = Image.FromStream(ms);//出错行 我想过可能是发送方的缓冲区出现问题,就是一方在读一方在写,同时进行,而且缓冲区满了导致头文件被挤没了,想问一下发送有缓冲区吗,是不是这得问题呢?还有这些缓冲区有锁吗?能不能清空,请高手指点,如果把sendbuffersize设为0会怎样
你第一次revSocket.Receive(inum);
读取的值是你传过来的文件大小吗?
调试一下看看file读的数据是否正确。
要不把它保存为文件,看看数据正确么。