非常奇怪的一个问题??急!!

IDWB 2009-04-07 12:26:51
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket.Host:=hostedit.Text;
ClientSocket.Port:=strtoint(portedit.Text);
ClientSocket.Open;
sleep(100); //这里无论多少时间都一样
ClientSocket.Socket.SendText('abcd');
end;
服务器端始终收不到abcd
我用sniffer查看了发现没有发过abcd的包

但是
procedure TForm1.Button2Click(Sender: TObject);
begin
ClientSocket.Socket.SendText('abcd');
end;
就可以收到
用sniffer发现有包
...全文
117 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kye_jufei 2009-05-08
  • 打赏
  • 举报
回复
已经不是建立连接了吗
xiaoxian251 2009-05-08
  • 打赏
  • 举报
回复
ClientSocket.Host:=hostedit.Text;
ClientSocket.Port:=strtoint(portedit.Text);
ClientSocket.Open;
sleep(100); //这里无论多少时间都一样
Application.ProcessMessages;
ClientSocket.Socket.SendText('abcd');
悦铉 2009-05-08
  • 打赏
  • 举报
回复
一楼说的对,在发送数据之前一定要加上判断
if clientSocket.connected then
begin
clientSocket.sendText('asdf');
end;
sll853 2009-05-06
  • 打赏
  • 举报
回复
应该判断是否连接成功了,然后在发送数据。
7年 2009-04-07
  • 打赏
  • 举报
回复
帮顶,学习。
IDWB 2009-04-07
  • 打赏
  • 举报
回复
应该是连上了,而且我用sniffer发现连接已经发起,然后sleep,但是执行到sendtext,没有发现发包.
不过bdmh的建议不错,我一直钻了牛角

bdmh 2009-04-07
  • 打赏
  • 举报
回复
你应该确保ClientSocket已经连接上,在进行发送
ClientSocket应该有Connect事件,在里面判断是否连接成功,如果成功,则发送
yct0605 2009-04-07
  • 打赏
  • 举报
回复
还是应该判断是否连接成功了,然后在发送数据。
hongqi162 2009-04-07
  • 打赏
  • 举报
回复
var
timeout: integer;
begin
ClientSocket.Host:=hostedit.Text;
ClientSocket.Port:=strtoint(portedit.Text);
ClientSocket.Open;
timeout := 0;
while not ClientSocket.Socket.Connected and (timeout< 500) do
begin
Application.ProcessMessages;
Sleep(1);
inc(timeout);
end;
if ClientSocke.Socket.Connected then begin
ClientSocket.Socket.SendText('abcd');
end;
end;


//Open不等于已经建立连接了

1,593

社区成员

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

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