Hi, 
i trying to send a record with TWSocket in delphi (code below).
send/receive works well, but when i close the connection to the server.
OnDataAvailable is fired and i get a message (from my showmessage) with
strange signs. That means i cast the incoming data to my record an get
something useless stuff ;>. How can i prevent this?


//******* the client ********
//connecting to server
procedure TForm1.Btn_ConnectClick(Sender: TObject);
begin
  WSocket1.Proto:='tcp';
  WSocket1.Addr:=Edit_Addr.Text;
  WSocket1.Port:=Edit_Port.Text;
  Wsocket1.Connect;
end;

//sending
var msgrec:Tmsgrec; //msgrec is a simple record-struct with 1 string[255]

  if wsocket1.State=wsConnected then
  begin
    msgrec.MsgText:='my text';
    Wsocket1.Send(@msgrec,sizeof(msgrec));
  end else showmessage('not connected');

//********* the server *******
// starting the server
procedure TForm1.Btn_ListenClick(Sender: TObject);
begin
  WSocket1.proto:='tcp';
  WSocket1.Addr:='0.0.0.0';
  WSocket1.Port:='50000';
  wsocket1.Listen;
end;

//accepting all incomming connections
procedure TForm1.WSocket1SessionAvailable(Sender: TObject; Error: Word);
begin
 wsocket1.HSocket:=Wsocket1.Accept;
end;

//receiving data
procedure TForm1.WSocket1DataAvailable(Sender: TObject; Error: Word);
var msgrec    : Tmsgrec;
    Src       : TSockAddrIn;
    SrcLen    : Integer;
    RemoteAddr: string[15];
begin
  if error=0 then
  begin
    SrcLen := SizeOf(Src);
    wsocket1.ReceiveFrom(@MsgRec,SizeOf(MsgRec),Src,SrcLen); 
    if SrcLen>0 then
    begin
    RemoteAddr:=inet_ntoa(src.sin_addr); //IP ermitteln
    if msgrec.msgtext<>'' then showmessage(msgrec.msgtext);
    end;
  end;
end;

i found nothing usefult in google, hope you can help...

greets frank

-- 
Weitersagen: GMX DSL-Flatrates mit Tempo-Garantie!
Ab 4,99 Euro/Monat: http://www.gmx.net/de/go/dsl

-- 
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

Reply via email to