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

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;

...全文
56 6 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanqth 06-30

img


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

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

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

  • 打赏
  • 举报
回复
@tanqth 我不想等待主机回复,也不想设置时间,就是给主机发送一个信息,就自动退出、
  • 举报
回复
tanqth 06-30
@NEEZA哪吒 那你就把Memo1.Lines.Add(ReadLn());这一行注释了吧。
  • 举报
回复
展开其他2条回复
相关推荐
发帖
Delphi

5124

社区成员

Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
帖子事件
创建了帖子
2022-06-30 08:39
社区公告
暂无公告