ClientSocket发送数据的问题,急啊!

yinweixian 2007-08-14 10:46:49
我是和硬件通讯,源程序如下:
rece:='';
ClientSocket1.Address:='192.168.2.1';
ClientSocket1.Port:=2001;
ClientSocket1.Open;
ClientSocket1.Socket.SendText('aaaaaa');
sleep(1000); // 为了等待返回的数据,时间足够长了。
rece:=ClientSocket1.Socket.ReceiveText; // 这里rece一直是空,根本收不到数据。
ClientSocket1.Close;
上面是收不到数据的程序,改成如下程序就能正确接收。

rece:='';
ClientSocket1.Address:='192.168.2.1';
ClientSocket1.Port:=2001;
ClientSocket1.Open;
ClientSocket1.Socket.SendText('aaaaaa');
sleep(1000);
showmessage('aaaa'); // 就加了一个弹出的对话框,而且内容什么随便写什么都没关系。
rece:=ClientSocket1.Socket.ReceiveText; // 这里rece就能正确收到数据。
ClientSocket1.Close;

我觉得好象是在发送的时候要触发一下,一定要点一下鼠标。真是奇怪了。因为我以前做是分开两个按钮做的,一个按钮是连接(也就是ClientSocket1.Open),一个按钮是发送,这样做就没有什么问题,收据全部都能正确发送和接收。现在需要要写在一起,竟然出错了,我现在中间是不能有对话框出现的,急啊!
麻烦各位看看应该怎么解决啊?
...全文
127 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
LittleLandlord 2007-08-20
  • 打赏
  • 举报
回复
ClientSocket1.Socket.ClientType :=ctBlocking;//改变为阻塞方式
xiaokexinger 2007-08-15
  • 打赏
  • 举报
回复
TClientSocket 应该有一个onReceive()事件吧, 分开处理 不可能收不到
brightyang 2007-08-14
  • 打赏
  • 举报
回复
sleep久点试试
xjjrocker 2007-08-14
  • 打赏
  • 举报
回复
可能定义的接收包太大,而且使用的是阻塞接收方式吧,接受包不够就不返回。
更改接受缓存大小试试。

1,593

社区成员

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

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