Winsock连接不起作用

时间:2015-05-29 08:08:48

标签: delphi winsock

我正在使用Delphi 2007.在我的Delphi应用程序中,我需要通过端口和IP发送字符串,接收方必须给我一个答案。

我已创建此代码,但我不确定我是否真的正确地做事,因为我没有得到答案:

 procedure TForm1.Button1Click(Sender: TObject);
 var port:integer;
 begin
  port:=StrToInt(edit4.text);
  ClientSocket1.Port:=21000;
  ClientSocket1.Host:=Edit3.text;
  ClientSocket1.ClientType:=ctNonBlocking;
  ClientSocket1.Active:=true;
  ClientSocket1.Connect.
 end;    

 procedure TForm1.ClientSocket1Connect(Sender: TObject;  Socket:CustomWinSocket); 
 begin
  Checkbox1.Checked:=true;
  Edit1.Text:=Socket.LocalAddress;
  Edit2.Text:=Socket.LocalHost;
  Memo2.Lines.Clear;
  Edit5.Text:='STX ~ JR | ETX';
 end;

 procedure TForm1.Button2Click(Sender: TObject);
 begin
  if ClientSocket1.Active then
   ClientSocket1.Socket.SendText(Edit5.text)
  else
   Memo1.Lines.Add('Not working');
 end;

 procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: CustomWinSocket);
 begin
  Memo2.Lines.Add(Socket.ReceiveText);
 end;

在点击第二个按钮之前,如何确定我仍然连接? (发送数据的人)。

如果我违反任何规则,对不起我的英语不好并道歉。

1 个答案:

答案 0 :(得分:0)

  

在点击第二个按钮之前,如何确定我仍然连接? (发送数据的人)。

在连接ClientSocket1时,在代码中设置CheckBox1.Checked := true。 因此,在使用ClientSocket1.OnDisconnect事件进行转录时,您可以将相同的复选框设置为false。 连接中断时会自动触发ClientSocket1Disconnect。

procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Checkbox1.Checked:=false;
end; 

现在,如果ClientSocket1已连接,您可以使用CheckBox1作为指标。