TClientSocket的问题,高手进入!!

喜欢编程朋友 2004-08-13 02:46:32
我在编写网络程序的时候,用TClientSocket控件实现。但是我想在Socket连接上之后,就立即发送一个数据包,但对方老是收不到,不知道怎么来解决?下面是我的代码,帮忙看看。

BitBtn1的onClick事件
var
str1:string;
begin
str1:='192.168.1.252';
if trim(str1)<>'' then
begin
ClientSocket1.Close;
ClientSocket1.Address := str1;
clientsocket1.Port:=12;//server port
ClientSocket1.ClientType := ctNonBlocking;
try
clientsocket1.open;
clientsocket1.Socket.SendText('测试数据:'+str1);
showmessage('连接成功');
except
showmessage('连接失败');
end;
end;
end;
点击按钮后,只弹出连接成功,但是clientsocket1.Socket.SendText('测试数据:'+str1);这个数据对方没有收到,如果将这个发送数据写到其他按钮里面对方就能收到数据,这种情况怎样来解决呀。我就是想在Socket连接上之后,就立即发送一个数据。高手帮忙找一个办法吧。
...全文
307 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
leilu 2004-09-08
  • 打赏
  • 举报
回复
delphi7 的compents 菜单里打开install packages 菜单,选 ADD... ,在选择delphi安装目录里的bin目录,找dclsockets70.bpl,安装
thunderbird521 2004-09-01
  • 打赏
  • 举报
回复
Nonblocking连接后必须在OnConnect事件发生后发送数据,请楼主马上结贴
halfdream 2004-08-31
  • 打赏
  • 举报
回复
clientsocket1.open;
while not clientsocket1.active do
begin
Application.processMessages;
sleep(1);
end
clientsocket1.Socket.SendText('测试数据:'+str1);
wofan 2004-08-31
  • 打赏
  • 举报
回复
看偶的贴子

http://community.csdn.net/Expert/topic/3326/3326247.xml?temp=.2388422
huiwww 2004-08-31
  • 打赏
  • 举报
回复
要搞清楚,clientsocket1.open;以后,不会停下来,程序继续跑下去,下面的代码不会等clientsocket1与服务器连接成功后才继续跑下去,也就是说不同线程跑的。
这样就出现你的问题,建议在在OnConnect事件里写发送信息
南飞 2004-08-31
  • 打赏
  • 举报
回复
在OnConnect事件里写发送信息较方便
wofan 2004-08-31
  • 打赏
  • 举报
回复
clientsocket1.open;不就相当于ClientSocket1.Active:=true;

open后并不能马上发数据,就这样
phoenixsharp 2004-08-31
  • 打赏
  • 举报
回复
只需这样ClientSocket1.Active:=true;
byteway 2004-08-31
  • 打赏
  • 举报
回复
ClientSocket1.Host:= str1;
littlegentle 2004-08-31
  • 打赏
  • 举报
回复
同意楼上的,你用的是非阻塞,你把ClientSocket1.ClientType := ctBlocking;就可以了
wofan 2004-08-31
  • 打赏
  • 举报
回复
连接不能马上发送消息,握手有一个时间,你可以在OnConnect Everts里面写ClientSocket1.Socket.SendText();
chenminghong 2004-08-31
  • 打赏
  • 举报
回复
要什么创建
wofan 2004-08-31
  • 打赏
  • 举报
回复
不是找不到,而是你根本就没创建

从面板里面拖出来是没有Socket.sendtext的
jzhdyx 2004-08-31
  • 打赏
  • 举报
回复
可以在OnConnect事件发生后在发送数据
chenminghong 2004-08-31
  • 打赏
  • 举报
回复
我什么找不到clientsocket1控件
wofan 2004-08-31
  • 打赏
  • 举报
回复
楼主结贴
wei0527 2004-08-30
  • 打赏
  • 举报
回复
在write事件里啊
xiaolingw 2004-08-27
  • 打赏
  • 举报
回复
可以在OnConnect事件发生后在发送数据
jiuzhangcs21dn 2004-08-26
  • 打赏
  • 举报
回复
clientsocket1.open;改为 clientsocket1.socket.connect(i) i是整型指Server端监听此socekt的一个实例,若没有,则要创建; 或者你把端口号改大一点试试
zzhsxsh 2004-08-26
  • 打赏
  • 举报
回复
试试将发送数据的语句单独写成一个过程来调用

1,593

社区成员

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

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