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@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to