Our second method is connect. Yes, that name is overused, but it describes exactly what we are doing even if we also have to use the built-in “connect” method that is part of the TCP/IP functions in Perl (and the underlying C library). Ours will be part of the Astro::INDI object we are creating, so there will be no conflict. We’ll also supply disconnect for symmetry, and supply a synonym close.
# Method to connect to indiserver
sub connect {
my ($self, %initializer) = @_;
foreach my $key (keys %initializer) {
$self->{$key} = $initializer{$key};
}
my $iaddr = inet_aton($self->{host})
or die("unknown host $self->{host}");
my $paddr = sockaddr_in($self->{port}, $iaddr);
my $proto = getprotobyname('tcp');
my $sock;
socket($sock, PF_INET, SOCK_STREAM, $proto)
or die("socket: $!");
connect($sock, $paddr)
or die("connect: $!");
$self->{sock} = $sock;
}
# Method to disconnect
sub disconnect {
my $self = shift;
close($self->{sock});
}
# Alias for disconnect
sub close {
my $self = shift;
$self->disconnect(@_);
}
There’s nothing particularly special here; this is really just more boilerplate for anything that uses TCP/IP. The only real comment here about keeping in mind error handling and testing.
Written by Roland Roberts
Search
.Archives
- October 2024 (1)
- May 2024 (2)
- April 2024 (3)
- September 2022 (5)
- April 2022 (1)
- January 2022 (3)
- December 2021 (4)
- September 2021 (3)
- July 2021 (1)
- January 2021 (1)
- November 2020 (2)
- October 2020 (2)
- September 2020 (2)
- August 2020 (5)
- July 2020 (1)
- November 2019 (2)
- September 2019 (1)
- August 2019 (2)
- September 2017 (1)
- August 2017 (1)
- September 2015 (3)
- August 2015 (2)
- June 2015 (5)
- May 2015 (3)
- May 2013 (2)
- January 2013 (1)
- December 2012 (2)
- September 2012 (1)
- June 2012 (1)
- May 2012 (1)
- October 2011 (2)
- September 2011 (2)
- April 2011 (2)
- March 2011 (10)
- January 2011 (8)
- November 2010 (2)
- October 2010 (1)
- September 2010 (3)
- August 2010 (2)
- July 2010 (1)
- June 2010 (1)
- April 2010 (3)
- February 2010 (3)
- January 2010 (3)
- December 2009 (6)
- November 2009 (3)
- October 2009 (7)
- September 2009 (8)
- August 2009 (4)
- July 2009 (1)
- June 2009 (2)
- May 2009 (2)
- April 2009 (7)
- March 2009 (1)
- February 2009 (6)
- January 2009 (4)
- December 2008 (4)
- November 2008 (3)
- October 2008 (11)
- September 2008 (4)
- August 2008 (5)
- July 2008 (5)
- June 2008 (2)
- April 2008 (4)
- March 2008 (18)
- February 2008 (9)
- November 2007 (1)
- October 2007 (3)
- July 2007 (3)
- April 2007 (1)
- March 2007 (6)
- February 2007 (3)
- December 2006 (3)
- October 2006 (4)
- September 2006 (1)
- July 2006 (5)
- May 2006 (10)
- April 2006 (9)