客户端与服务器端信息传输的问题,为啥我发送完就死机了、是循环出了问题吗。

NEEZA哪吒 2022-06-30 08:39:12

这是在网上找的客户端想服务器发送信息的例子,我想发完消息后自动关闭客户端,我加了一段代码不起作用、现在是只要点击发送,客户端就司机了,但是主机还是可以收到消息的。

procedure TForm1.sendbtnClick(Sender: TObject);
begin
  Memo1.Lines.Add('DATA'+sendEdit.Text);
  With IdTcpClient1 do
   begin
     try
        WriteLn('DATA'+sendEdit.Text); 
        Memo1.Lines.Add(ReadLn())
      except
       Memo1.Lines.Add('发送数据失败');
       IdTcpClient1.Disconnect();
       Memo1.Lines.Add('同主机连接已断开');
      end;
   end;

Application.Terminate;  //这个是我自己加的,不起作用、

end;

...全文
195 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanqth 2022-06-30
  • 打赏
  • 举报
回复

img


这个写法也是有问题的。
首先except后面应该只有一个代码块,应该是begin到end内,其次是,你这个断开客户端是需要在出现异常后才会去处理的。

tanqth 2022-06-30
  • 打赏
  • 举报
回复

你这不是死机,是在等待:
Memo1.Lines.Add(ReadLn());
你发送完成后,再等待服务器的一个返回,而你没设置等待的时间,他就一直等。
你要解决就是,要么不要这个读取,要么服务器收到信息返回一个信息,要么设置一个等待时间。

NEEZA哪吒 2022-06-30
  • 举报
回复
@tanqth 我不想等待主机回复,也不想设置时间,就是给主机发送一个信息,就自动退出、
tanqth 2022-06-30
  • 举报
回复
@NEEZA哪吒 那你就把Memo1.Lines.Add(ReadLn());这一行注释了吧。
tanqth 2022-06-30
  • 举报
回复 1
@NEEZA哪吒 ReadLn()你这个就是在读取服务器返回。你不要这行代码就OK了
1条回复

5,927

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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