Я работаю над системой отслеживания транспортных средств, в которой устройство GPS (запрограммированный клиент сокетов) связывается с сервером сокетов для отправки координат GPS и т. Д. Сервер сокетов анализирует данные и отправляется с помощью метода get в http web. услуги по дальнейшей переработке. Я попытался смоделировать 50 клиентов локально, чтобы изучить поведение сервера сокетов. К сожалению, я вижу задержку в разборе / получении данных, хотя все клиенты были запущены в одно и то же время. Но Мое требование - быть первым обслуженным, но в этом контексте это не так. Нужно ли что-нибудь для обработки параметра Timeout
в new IO::Socket::INET ();
? Ниже мой сокет-сервер прослушивает порт 11050.
#!/usr/bin/perl
use IO::Socket::INET;
$| = 1;
my ($socket,$client_socket);
my ($peeraddress,$peerport);
my $LOGFILE="/home/nuthan/program/input.log";
open (LOG,">>$LOGFILE");
$socket = new IO::Socket::INET ( LocalHost => '192.168.1.110',
LocalPort => '11050', Proto => 'tcp',
Listen => 500, Reuse => 1,
Blocking => 0, Timeout => 2 )
or die "ERROR in Socket Creation : $!\n";
while(1) {
# waiting for new client connection.
$client_socket = $socket->accept();
#print "SOCKET $client_socket SOCKET\n";
if (! $client_socket){
next;
}
# Received from Client :
#356823033046306##0#0000#AUT#1#V#07734.7000,E,1259.5355,N,000.00,288#211011#085017##
#EMI's code(15 numbers)#username#status#password#data type#data volume#base station information#longitude, E,latitude, N, speed, direction#date#time##
$client_socket->recv($data,1500);
print "Received from Client : $data\n";
#print LOG "Received from Client : $data\n";
my ($blah,$EMI,$username,$status,$password,$data_type,$data_volume,
$base_station_info,$dir,$date,$time,$blah1)=split(/\#/,$data);
new_do_get($EMI,$dir,$date,$time);
}
sub new_do_get(){
print "In new_do_get\n";
my ($EMI,$dir,$date,$time) = @_;
my ($longitude,$e,$latitude,$n,$speed,$direction)=split(/,/,$dir);
my $url = "http://192.168.1.110:8080/prototype/socket/location.php?"
. "ln=$longitude<=$latitude&imei=$EMI&d=$date&o=0&v=$speed&t=$time";
# print "$url\n";
use LWP::Simple;
my $content = get $url;
die "Couldn't get $url" unless defined $content;
}
$socket->close();
close LOG;