我正在使用Net :: Server模块构建一个preforking SSL服务器。 客户端将传输二进制数据,或者为每个数据集打开一个新连接,或者让连接永久打开。
数据具有动态长度,标头指定有效负载长度。
问题:
代码模板:
#!/usr/bin/perl
use common::sense;
use IO::Socket;
use base qw(Net::Server::PreForkSimple);
my $sslErrorCallback = 'ssl_error_callback';
__PACKAGE__->run(
port => "*:12345:ssleay:IPv4",
SSL_key_file => "server.pem",
SSL_cert_file => "server.crt",
SSL_error_callback => \&$sslErrorCallback,
);
exit;
################################################################################
sub ssl_error_callback {
print STDERR "SSL failed; Data::Dumper:Dumper(\$@)";
}
##
# process_request - for Net::Server
sub process_request {
my $self = shift;
my $serverProp = $self->{'server'};
# howto check if ssl session is established?
while(1) {
# wait until new data is available
# read/verify the header (5 byte)
# read/verify the payload (XX byte)
# do something with the payload
};
return;
}