ClientSocket的问题,急需,请进入!!

喜欢编程朋友 2004-09-10 10:19:57
我现在遇到了ClientSocket的一个问题,我想在ClientSocket连接上之后就随即发送一个命令,但是不知道把这个发送命令写到哪儿地方,怎样来实现。我发送后对方老是收不到,怎么回事。
下面是我的代码:
begin
str1:='192.168.1.252';
if trim(str1)<>'' then
begin
ClientSocket1.Close;
ClientSocket1.Host:= str1;
clientsocket1.Port:=12;//server port
ClientSocket1.ClientType := ctNonBlocking;
try
clientsocket1.open;
clientsocket1.Socket.SendText('命令数据');
except
end;
end;
但是clientsocket1.Socket.SendText('命令数据');这个数据对方总是收不到,如果将这个发送数据写到其他按钮事件里面对方就能收到数据,这种情况怎样来解决呀。
我现在就是想在Socket连接上之后,就立即发送一个数据。高手帮忙找一个办法吧。谢谢了!!!
...全文
258 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
birdhaha 2004-09-16
  • 打赏
  • 举报
回复
应该写在onconnect里
SocketCLS 2004-09-16
  • 打赏
  • 举报
回复
host是服务器名称,用IP用Address

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('命令数据');
except
end;
end;
li_yan_woods 2004-09-15
  • 打赏
  • 举报
回复
var
result:string;
begin
ClientSocket1:= TClientSocket.Create(nil);
ClientSocket1.Host:='128.8.75.65';
ClientSocket1.Port:=1024;
ClientSocket1.Open;
while not clientsocket1.socket.connected do
Application.processmessages;//等待连接
ClientSocket1.Socket.SendText('88480666');
// sleep(1000);
label1.Caption:=ClientSocket1.Socket.ReceiveText;
while trim(label1.Caption)='' do //没有收到消息,则延时再收
label1.Caption:=ClientSocket1.Socket.ReceiveText;
ClientSocket1.Close;
FreeAndNil(ClientSocket1);
这样的话又能发又能收!!
alfsnow 2004-09-14
  • 打赏
  • 举报
回复
为什么不在onconnect事件里写,例子里有阿
wei0527 2004-09-13
  • 打赏
  • 举报
回复
在write事件里写不就得了
qzxyd 2004-09-12
  • 打赏
  • 举报
回复
把clientSocket设为非阻塞式,在打开的时后一定要写
clientSocket.close;
ClientSocket.open;
再在ClientSocket的onconnect事件中写
socket.SendText(数据);
这是一定能成功的,我试过很多次都成功了
zhouhua206 2004-09-11
  • 打赏
  • 举报
回复
学习
hiflower 2004-09-11
  • 打赏
  • 举报
回复
ClientType 改成 阻塞模式即可
抱朴守拙 2004-09-10
  • 打赏
  • 举报
回复
实在不行,试一下:
clientsocket1.open;
sleep(500);//如果还不行,加大一下参数值
clientsocket1.Socket.SendText('命令数据');
MMas 2004-09-10
  • 打赏
  • 举报
回复
更正clientsocket.ope; ==>clientsocket.open;
MMas 2004-09-10
  • 打赏
  • 举报
回复
wangmaohuo(汪逸) 说对一半

clientsocket1.ope; 
while no clientsocket1.socket.connected do Application.processmessages;//等待连接
clientsocket1.Socket.SendText('命令数据');
这方法肯定成功,本人用socket做过dll.

To halfdream(哈欠):
怎么你没把问题说完整?教师节快乐!呵呵
喜欢编程朋友 2004-09-10
  • 打赏
  • 举报
回复
zzllabc(抱朴子--清心释累,绝率忘情);
你好!我按照你说的将clientsocket1.Socket.SendText('命令数据');
这句放到OnConnect事件中时,对方也是收不到的,怎么回事呀?你这样用过吗?你最好自己再试试,我刚试过的。谢谢你请尽快回复!!
halfdream 2004-09-10
  • 打赏
  • 举报
回复
嘿嘿.明显是wangmaohuo(汪逸)说的那样.

chenminghong 2004-09-10
  • 打赏
  • 举报
回复
clientsocket1是什么控件,我什么都找不到他
抱朴守拙 2004-09-10
  • 打赏
  • 举报
回复
clientsocket1.Socket.SendText('命令数据');
把上面这句放在OnConnect事件中写。
wangmaohuo 2004-09-10
  • 打赏
  • 举报
回复
老兄,你把ClientSocket1.Host:= str1;代码变成:ClientSocket1.Address:= str1;试试。看行不行。

wangmaohuo 2004-09-10
  • 打赏
  • 举报
回复
老兄,
抱朴守拙 2004-09-10
  • 打赏
  • 举报
回复
给你发的短信看到了吗?好不好用?
喜欢编程朋友 2004-09-10
  • 打赏
  • 举报
回复
zzllabc(抱朴子--清心释累,绝率忘情);
你的这种方法
clientsocket1.open;
sleep(500);//如果还不行,加大一下参数值
clientsocket1.Socket.SendText('命令数据');
我已经试过了还是不行,不知道该怎么办呀?帮忙呀!

1,593

社区成员

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

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