[fpc-pascal]Garbage on client socket
Fernando Lozano
fsl at centroin.com.br
Wed Aug 28 23:04:57 CEST 2002
Hi there,
I wrote two small programs using the sockets unit from FPC 1.0.6
under Windows 95. One is a client that just sends one line of text
and reads the reply from the same socket. The other is a server that
eches back anything it receives from the client:
Here's the client:
//---------------------------
program cliente;
uses sockets;
procedure erro (msg: ansistring);
begin
writeln (msg);
halt(1);
end;
var
addr : TInetSockAddr;
s : longint;
sin, sout : text;
linha : ansistring;
begin
addr.family:=AF_INET;
{ port 3000h in network order }
addr.port := ((30) shl 8) or 0;
{ localhost : 127.0.0.1 in network order }
addr.addr := (1 shl 24) or 127;
s := socket (AF_INET, SOCK_STREAM, 0);
if not connect (s, addr, sin, sout) then erro ('failed connect');
rewrite (sout);
reset (sin);
writeln (sout, 'This is a test');
flush (sout);
readln (sin, linha);
writeln ('Got:[', linha, ']');
close (sin);
close (sout);
end.
//-------------------
And here's the server:
//-------------------
program servidor;
uses sockets;
procedure erro (msg: ansistring);
begin
writeln (msg);
halt(1);
end;
var
addr : TInetSockAddr;
s : longint;
sin, sout : text;
linha : ansistring;
begin
addr.family:=AF_INET;
{ port 3000h in network order }
addr.port := ((30) shl 8) or 0;
{ localhost : 127.0.0.1 in network order }
addr.addr := (1 shl 24) or 127;
s := socket (AF_INET, SOCK_STREAM, 0);
if not bind (s, addr, sizeof (addr)) then erro ('can't bind');
if not listen (s, 1) then erro ('can't listen');
if not accept (s, addr, sin, sout) then erro ('can't accept');
rewrite (sout);
reset (sin);
while not eof (sin) do begin
readln (sin, linha);
writeln ('Got:', linha);
writeln (sout, linha);
flush (sout);
end;
close (sin);
close (sout);
end.
//-------------------
And here's the output from the server:
//-------------------
H:\redes>servidor
Got:This is a test
H:\redes>
//-------------------
But look at the client output, full of garbage:
//-------------------
H:\redes>cliente
got:[
_Î îË@ X?@ ©?@ @@ X@@
.
This is a test]
H:\redes>
//-------------------
I can't find if I did something wrong.
[]s, Fernando Lozano
More information about the fpc-pascal
mailing list