[fpc-pascal] fpbind ipv6 version
Alexander Grotewohl
alex at dcclost.com
Sun Oct 27 16:56:35 CET 2019
I sent this direct to him on accident but I don't think it worked
anyways (bounced?)
Just some test code so not very pretty. It works, but IN6ADDR_ANY was
missing and I'm not familiar enough with ipv6 to know how it might be
defined in other languages.
uses sockets;
const
IN6ADDR_ANY: array[0..3] of longint = (0, 0, 0, 0);
test: string = 'derp derp derp'#13#10;
var
servsoc: longint;
clientsoc: longint;
serv, client: TInetSockAddr6;
i, res: longint;
begin
servsoc:=fpsocket(AF_INET6, SOCK_STREAM, 0);
fillchar(serv, sizeof(serv), 0);
serv.sin6_family:=AF_INET6;
serv.sin6_port:=htons(1234);
serv.sin6_addr.s6_addr32:=IN6ADDR_ANY;
fpbind(servsoc, @serv, sizeof(serv));
if (fplisten(servsoc, 10) < 0) then
writeln('ow');
i:=sizeof(client);
clientsoc:=fpaccept(servsoc, @client, @i);
if (clientsoc = -1) then
writeln('ow');
res:=fpsend(clientsoc, @test[1], length(test), 0);
if (res = -1) then
writeln('ow')
else
writeln(res);
closesocket(clientsoc);
closesocket(servsoc);
end.
On 10/27/2019 5:32 AM, Michael Van Canneyt wrote:
>
>
> On Sat, 26 Oct 2019, Rainer Stratmann wrote:
>
>> https://www.freepascal.org/docs-html/current/rtl/sockets/fpbind.html
>>
>> Is there an example for IPV6?
>>
>> function fpbind(
>> s: cint;
>> addrx: psockaddr;
>> addrlen: TSockLen
>> ):cint;
>>
>> I guess psockaddr is different in IPV6 version.
>
> No, it does not have to be.. The addrlen will differ of course. That's
> why it is there to begin with. Maybe an overload could be added, I
> would need to look into this to see if
> it is required.
>
> Michael.
> _______________________________________________
> fpc-pascal maillist - fpc-pascal at lists.freepascal.org
> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
More information about the fpc-pascal
mailing list