I don't have Windows, so good luck trying this. It does work on an ArchLinux system, that is, if I correctly understand what you are trying to do.
#!/usr/bin/perl
use strict; # https://perlmonks.org/?node_id=11125685
use warnings;
use Tk;
use IO::Socket;
my $listen = new IO::Socket::INET (
LocalHost => '127.0.0.1',
LocalPort => '23456',
Proto => 'tcp',
Listen => 5,
Reuse => 1
) or die "cannot create listen socket $@\n";
warn "server waiting for client connection on port 23456 \n";
my $val = 0;
my $client;
my $mw = MainWindow->new();
my $label = $mw->Label( -width => 50, -textvariable => \$val,)->pack()
+;
my $button;
$button = $mw->Button( -text => 'Stop input', -command => sub
{
$button->configure(-state=>'disabled');
close $client;
close $listen;
}, )->pack();
$mw->fileevent( $listen, 'readable', \&newcon );
MainLoop;
sub newcon
{
$client = $listen->accept;
$mw->fileevent($client, 'readable', \&getdata );
}
sub getdata
{
if( sysread $client, my $buf, 1024 )
{
warn "received data: $buf\n";
$val = $buf =~ tr/\n//dr;
$client->send('ok'); # write response data to the connected client
shutdown($client, 1); # notify client that response has been sent
}
else { close $client; }
}
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.