I have the code to listen on a UDP port when the first button is clicked, and send a packet when the second button is clicked. It works fine except when the second button is clicked, it sends two packets (I captured that with Ethereal.) Is there anything I'm not doing right?
-- Best regards, Jack unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, WinSock, WSocket; type TForm1 = class(TForm) WSocket1: TWSocket; Memo1: TMemo; Label1: TLabel; Label2: TLabel; btnSend: TButton; edtDstIP: TEdit; edtSvrPort: TEdit; btnListen: TButton; edtPort: TEdit; procedure WSocket1DataAvailable(Sender: TObject; ErrCode: Word); procedure btnSendClick(Sender: TObject); procedure btnListenClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.btnListenClick(Sender: TObject); begin WSocket1.Proto := 'udp'; WSocket1.Port := edtSvrPort.Text; WSocket1.Addr := '0.0.0.0'; WSocket1.Listen; btnListen.Enabled := False; end; procedure TForm1.btnSendClick(Sender: TObject); var Src: TSockAddrIn; SrcLen: Integer; begin Src.sin_family := AF_INET; Src.sin_addr.S_addr := inet_addr(PChar(edtDstIp.Text)); Src.sin_port := hToNs(StrToInt(edtPort.Text)); SrcLen := SizeOf(Src); WSocket1.SendTo(Src, SrcLen, PChar('Hello'), 5); end; procedure TForm1.WSocket1DataAvailable(Sender: TObject; ErrCode: Word); begin if ErrCode = 0 then Memo1.Lines.Add(WSocket1.ReceiveStr) else Memo1.Lines.Add('WSocket1DataAvailable() error = ' + IntToStr(ErrCode)); end; end. -- To unsubscribe or change your settings for TWSocket mailing list please goto http://www.elists.org/mailman/listinfo/twsocket Visit our website at http://www.overbyte.be