delphi 里面一个奇怪的问题,不知道大家有没有碰到

pipinews 2008-04-26 04:02:27
我在delphi7里面导入了clientsocket 和 serversocket,设置如下
clientsocket active false port 5555
serversocekt active true port 5555 其他都是默认

代码:unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ScktComp;

type
TForm1 = class(TForm)
ClientSocket1: TClientSocket;
ServerSocket1: TServerSocket;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin

clientsocket1.Address:='192.168.1.100';
clientsocket1.Open;

clientsocket1.Socket.SendText('aaaaaaaa');
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
showmessage(socket.ReceiveText);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
serversocket1.Open;
end;

end.


问题是每次都要点击两次按钮,才能接收到消息,为什么,高手指点!!
...全文
95 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
pipinews 2008-05-07
  • 打赏
  • 举报
回复
高人呢...
pipinews 2008-05-07
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 skylkj 的回复:]
网络通信是有延时的.
clientsocket1.Address:='192.168.1.100';
clientsocket1.Open;

clientsocket1.Socket.SendText('aaaaaaaa');
你一open就立刻发送,实际上tcp连接需要3次握手,所以你sendtext的时候实际上还没连接上


解决方法是,你把clientsocket1的clinettype设置成阻塞式(ctblocking)就可以了.默认是非阻塞,所以你执行open后不管有没有结果都会立刻执行下面的语句.改成阻塞式后只有一个执行有结果了才会…
[/Quote]


高手,怎么不早点出现,我都发现了,后悔没有遇到你
skylkj 2008-05-07
  • 打赏
  • 举报
回复
网络通信是有延时的.
clientsocket1.Address:='192.168.1.100';
clientsocket1.Open;

clientsocket1.Socket.SendText('aaaaaaaa');
你一open就立刻发送,实际上tcp连接需要3次握手,所以你sendtext的时候实际上还没连接上


解决方法是,你把clientsocket1的clinettype设置成阻塞式(ctblocking)就可以了.默认是非阻塞,所以你执行open后不管有没有结果都会立刻执行下面的语句.改成阻塞式后只有一个执行有结果了才会返回
killerprince 2008-04-26
  • 打赏
  • 举报
回复
up 等高人~
CathySun118 2008-04-26
  • 打赏
  • 举报
回复
有没有跟踪第一次点击,触发了什么事件?有没有接收到内容
pipinews 2008-04-26
  • 打赏
  • 举报
回复
没有设置过缓存,默认就是这样,哥们
zhu_gx 2008-04-26
  • 打赏
  • 举报
回复
人真少啊
zhu_gx 2008-04-26
  • 打赏
  • 举报
回复
再帮你顶一下吧
zhu_gx 2008-04-26
  • 打赏
  • 举报
回复
是不是有属性可以设置,是马上发送还是放在缓存中等一下次发消息时发送啊
aluyue 2008-04-26
  • 打赏
  • 举报
回复
没做过这方面的,帮忙顶上去!!
zhu_gx 2008-04-26
  • 打赏
  • 举报
回复
是不是缓存的问题啊
zhu_gx 2008-04-26
  • 打赏
  • 举报
回复
顶你

1,593

社区成员

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

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