服务器端的代码:
在IdTCPServer1的OnExcute事件中
MyMemStream := TMemoryStream.Create;
try
AThread.connection.ReadStream(MyMemStream,-1,false);
....
....
finally
MyMemStream .free;
end;遇到的问题是:
每次客户端一连接,代码如下:
IdTCPClient1.Connect(10000);
服务器端的代码就停留在readstream(streamimg,-1,false);这里,关闭客户端程序后,服务器端报错,并跳到finally 里执行MyMemStream .free;请问如何解决呢?大虾们帮帮忙,小弟在线等待,谢谢!
在IdTCPServer1的OnExcute事件中
MyMemStream := TMemoryStream.Create;
try
AThread.connection.ReadStream(MyMemStream,-1,false);
....
....
finally
MyMemStream .free;
end;遇到的问题是:
每次客户端一连接,代码如下:
IdTCPClient1.Connect(10000);
服务器端的代码就停留在readstream(streamimg,-1,false);这里,关闭客户端程序后,服务器端报错,并跳到finally 里执行MyMemStream .free;请问如何解决呢?大虾们帮帮忙,小弟在线等待,谢谢!
解决方案 »
- TBHDataSet 是什么控件
- delphi提交表单
- 检测form窗体已经被创建的语句
- 关于Windows系统服务的问题
- 超级郁闷,装了IE7.0,无法上传文件了,,,,
- 用IdUDPClient,本机有多网卡,我想在其中一个网卡上发送广播怎么发呢?求高手~!
- 我没搞过DELPHI,最新版本是多少?
- 急:为什么quickreport的qrdbrichedit显示不了数据?在线等待...
- 请教各位!......
- 怎样将TListBox和THeadControl连接起来?
- 寻找Delphi版里的高手——如何截获Delphi 2005的IDE中Compile菜单项发出的编译命令?
- 关于Timage响应鼠标的事件
在IdTCPServer1的OnExcute事件中
MyMemStream := TMemoryStream.Create;
try
AThread.connection.ReadStream(MyMemStream,-1,false);
....
....
finally
MyMemStream .free;
end;遇到的问题是:
每次客户端一连接,代码如下:
IdTCPClient1.Connect(10000);
服务器端的代码就停留在readstream(MyMemStream,-1,false);这里,关闭客户端程序后,服务器端报错,并跳到finally 里执行MyMemStream .free;请问如何解决呢?大虾们帮帮忙,小弟在线等待,谢谢!
如果要避免 server一直在作readstream的waitting,可以设计一个通用的 timeout 机制 , 把连线过久的 socket 砍掉 ,这样 , readstream 应该就会收到断线之前的所有资料.
客户端发送文件的代码如下:
try
....
....
IdTCPClient1.WriteStream(SendMemSteam, true, true);
finally
SendMemSteam.free;
end;现在的问题是在客户端连接服务器的时候,即客户端在执行IdTCPClient1.Connect这句代码时,在服务端会触发OnExcute事件,而且停留在readstream(MyMemStream,-1,false);这句代码上,直至客户端程序关闭。
if (not AThread.Terminated) and (AThread.Connection.Connected) then
begin
...利用ReadFromStack
然后解析