Send-Data-to-Socket

发送数据到 Socket

发送数据到 Socket 的 3333 端口,并把所发送的数据保存到文件中。

my $vin = 'LSJA0000000000091';
my $last_meter = 0; 

react {
    whenever IO::Socket::Async.listen('0.0.0.0', 3333) -> $conn {
        my $fh = open 'events.txt', :w;
        react {
            my Bool:D $ignore = True;

            whenever Supply.interval(5).rotor(1, 1 => 1) {
                $ignore = !$ignore;
            }
    
            whenever Supply.interval(1) {
                next if $ignore;
                $fh.print: sprintf("\{'vin':'%s','createTime':%s,'mileage':%s}\n", $vin, DateTime.now.posix, $last_meter);
                $conn.print: sprintf("\{'vin':'%s','createTime':%s,'mileage':%s}\n", $vin, DateTime.now.posix, $last_meter++);
            }
        
            whenever signal(SIGINT) {
                say "Done.";
                $fh.close;
                done;
            }
        } 
    }
    CATCH {
        default {
            say .^name, ': ', .Str;
            say "handled in $?LINE";
        }
    }
}

在终端中消费实时发送的数据:

telnet 0.0.0.0 3333

可以看到如下所示的数据:

img

comments powered by Disqus