diff -r 84c26be382f0 -r bbdce6bffaad usbmgmt/usbmgrtest/t_ncm/netutil/server.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgrtest/t_ncm/netutil/server.pl Wed Oct 20 12:04:53 2010 +0800 @@ -0,0 +1,87 @@ +#!/usr/bin/perl -w +# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +# All rights reserved. +# This component and the accompanying materials are made available +# under the terms of "Eclipse Public License v1.0" +# which accompanies this distribution, and is available +# at the URL "http://www.eclipse.org/legal/epl-v10.html". +# +# Initial Contributors: +# Nokia Corporation - initial contribution. +# +# Contributors: +# +# Description: +# +use strict; +use IO::Socket qw(:DEFAULT :crlf); + +use constant MY_ECHO_PORT => 5000; +$/ = "\n"; +$| = 1; +my $tcp = 0; +print "\nUsage: server.pl tcp|udp [port]\n\n"; + +my ($byte_out, $byte_in) = (0,0); + +my $quit = 0; +$SIG{INT} = sub { $quit++ }; + +my $tcp = shift eq 'tcp'; +my $port = shift || MY_ECHO_PORT; +my $sock; + +if ($tcp) +{ + my $sock = IO::Socket::INET->new ( + Listen => 20, + LocalPort => $port, + Timeout => 60*60, + Reuse => 1 ) + or die "Can not create listening socket: $!\n"; + warn "waiting for the incoming connections on port $port...\n"; + + while ($tcp and !$quit) { + next unless my $session = $sock->accept; + my $peer = gethostbyaddr($session->peeraddr, AF_INET) || $session->peerhost; + warn "Connection from [$peer, $port]\n"; + + while(<$session>) { + $byte_in += length($_); + chomp; + print "in: $_\n"; + my $msg_out = (scalar reverse $_) . CRLF; + print "send back: $msg_out"; + print $session $msg_out; + $byte_out += length($msg_out); + } + warn "Connection from [$peer, $port] finished\n"; + close $session; + } +} + +if (not $tcp) +{ + my $sock = IO::Socket::INET->new( + LocalPort => $port, + Type => SOCK_DGRAM, + Proto => 'udp') or die "Can't connect: $!\n"; + + warn "waiting for the incoming udp data on port $port...\n"; + + while (!$quit) { + my $msg_in; + $sock->recv($msg_in, 10000); + $byte_in += length($msg_in); + chomp($msg_in); + print "in: $msg_in\n"; + my $msg_out = (scalar reverse $msg_in) . CRLF; + print "send back: $msg_out"; + $sock->send($msg_out); + $byte_out += length($msg_out); + } +} + +print STDERR "out = $byte_out, in = $byte_in\n"; +close $sock; +