delphi发送stream出现Stream read error

responsewrite 2012-08-29 07:11:45
使用delphi截屏存为stream,然后使用idudp发送,部分代码如下
jpgimage .SaveToStream(jpgstream ) ;
leftsize :=jpgstream .Size ;
if leftsize >buffsize then
sendsize :=buffsize
else
sendsize :=buffsize ;
idpclnt1 .Host :='127.0.0.1';
idpclnt1 .Port :=9999;
jpgstream .ReadBuffer(buf ,sendsize );
leftsize :=leftsize - sendsize ;
idpclnt1 .SendBuffer(buf ,sendsize );
当运行到红色那一行时就出错
project PRTSC.exe raised exception class EReadError with message 'Stream read error'.Process stopped .Use Step or Run to continue.
然后跳到工程文件下的end那行
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
这是为什么?怎么改?或者谁有一个发送图片的客户端、服务端的完整文件的例子帮忙发一份谢谢了
...全文
760 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
僵哥 2012-09-04
  • 打赏
  • 举报
回复
buf是怎么定义的?
kaikai_kk 2012-09-03
  • 打赏
  • 举报
回复
Read之前加
jpgstream.Position:=0;
responsewrite 2012-09-03
  • 打赏
  • 举报
回复
没人回,看来CSDN不适合初学者,呵呵
responsewrite 2012-08-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

另外养成一个良好的习惯, 在任何要重头到尾读取流前面的的地方 加一个stream.Position := 0 这样的语句对你百利无一害
[/Quote]

好建议,以后一定多多注意这,多谢前辈提醒
responsewrite 2012-08-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

提一下哈, 这里面有2个错误, 第一个是第一个if else后面sendsize按意思应该是:=leftsize, 第二, 你的发送是不是应该有一个循环, 为什么这里没看到循环呢
[/Quote]

确实写错了,delphi学了两个月,参考书很少涉及网络组件的,对网络组件就边百度边学,纠结死这个问题了。只是复制了一部分代码,后面还有循环部分的就是在接收的部分if receivesize > buffsize 发送一个send,让发送端继续发送
Hexpate 2012-08-29
  • 打赏
  • 举报
回复
另外养成一个良好的习惯, 在任何要重头到尾读取流前面的的地方 加一个stream.Position := 0 这样的语句对你百利无一害
Hexpate 2012-08-29
  • 打赏
  • 举报
回复
提一下哈, 这里面有2个错误, 第一个是第一个if else后面sendsize按意思应该是:=leftsize, 第二, 你的发送是不是应该有一个循环, 为什么这里没看到循环呢

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧