解决方案 »
- 如何在delphi中声明、实现private、public?
- 如何清除TextOut输出的字符
- delphi+sqlserver通用报表打印共享
- 关闭端口
- 如何在修改DBGrid内容时不自动修改表格?
- 有关屏幕分辨率的问题
- 我是初手,高分求代码!!
- 要做一件费时间的事,怎么设置progressbar的初始值和最终值啊?要做的这件事跟数值没关系,我真是想不通该怎么作了。
- 关于xe5 android webservice连接数据问题
- 在delphi中,如何实现窗口变大缩小?控件随着窗口变大缩小?
- delphi webbrowser1 如何设置访问网页代理
- delphi中动态添加了几个组件,每个组件如何应对事件
else showmessage('连接失败');估计是没有连接成功吧
ClientSocket1.Active:=True;
没起作用,为什么呢?如何做才可以。
ClientSocket1.Active:=True;//(block1)
后不能立即执行
ClientSocket1.Socket.SendText('test');//(block2)
在(block1)和block2之间必须执行任意操作,比如shwomessage('test'),
否则ClientSocket1.Active的值一直为false;
不知道是不是这样的,但是还是不明白这是为什么~~有望高人前来指点。
也就是说你修改属性值完成后,后台为套接字连接准备的工作不一定做完。
在(block1)和block2之间sleep下。
试试、
{而这个时候后台会异步的做一些为套接字连接的准备工作 如:监听... }
这话如何理解。
咋还有人问这问题?
function TForm1.getCon:Boolean;
begin//建立连接
try
ClientSocket1.Active:=False;
ClientSocket1.Port:=5000;
ClientSocket1.Address:='127.0.1.1';
ClientSocket1.Active:=True;
Result:=true;
except
Result:=false;
end;
end;
//1
procedure TForm1.Button1Click(Sender: TObject);
begin
if getCon then ClientSocket1.Socket.SendText('test')
else ShowMessage('error');
end;
//2
procedure TForm1.Button2Click(Sender: TObject);
begin
if getCon then ShowMessage('OK') else ShowMessage('error');
ClientSocket1.Socket.SendText('test');
end;
能看看,这2个返回的情况吗?
begin
getCon;
Sleep(1000);
end;看会不会出现死循环
然后在ClientSocket 的onConnecting事件中添加StatusBar1.Panels[0].Text := 'connecting'(当然要先放一个StatusBar1到窗体中),在onconnect事件中写StatusBar1.Panels[0].Text := 'connected',来判断是否连接成功
ClientSocket1.Socket.SendText('test')
else
showmessage('连接不成功');