gg4000 has asked for the wisdom of the Perl Monks concerning the following question:
The problem is that the window opens only after the connection is made.
The window has to open first. It will then show the IP, Date/Time. Then get updated every time the text comes from the client.Everything else is working. The filtered text gets filtered out, the command is sent to the system.
I don't think I need most of the "USE" commands, but I can try to filter them out later.I also know that the "While" is a problem. But I need the part after the while to run the rest of the code.
Here is a test Client. But it will only run once. Would like it to continue sending what is typed.#!/usr/bin/perl package main; use IO::Socket; use Sys::Hostname; use Socket; use 5.008; #use strict; use Wx; use wxPerl::Constructors; use base 'Wx::App'; use Wx qw(wxTE_MULTILINE wxVERTICAL wxID_DEFAULT); #use warnings; my($ipaddr)=inet_ntoa((gethostbyname(hostname))[4]); #$| = 1; my $app = Demo::App->new; $app->MainLoop; package Demo::App; #use strict; #use warnings; use base 'Wx::App'; sub OnInit { my $frame = Demo::App::Frame->new; $frame->Show(1); } package Demo::App::Frame; #use strict; #use warnings; use Wx qw(:everything); use base 'Wx::Frame'; sub new { my ($class) = @_; my $self = $class->SUPER::new( undef, -1, "X10 Voice Commander", wxDefaultPosition, wxDefaultSize, );$local = IO::Socket::INET->new( Proto => 'tcp', # protocol LocalAddr => "$ipaddr:8087", ) or die "$!"; my $addr; $local->listen(); $local->autoflush(1); while ($addr = $local->accept() ) { while (<$addr>) { $path = "C:/Program Files (x86)/Common Files/X10/Common"; chdir($path) or die "Cant chdir to $path $!"; ~s/GET//,~s/~/ /g,~s/%20/ /g,~s/%22/ /g,~s/x10command=DEVICE/ +/,~s/\//\ /g,~s/[?]//g ,~s/'/ /g,~s/HTTP/ /,~s/1.1/ /g,~s/sh://; system(AHCMD. "$_"); print "Received: $_"; print $addr $_; print $path $_; close $addr; #chomp; $self->{text} = Wx::TextCtrl->new($self, -1, "", [-1,-1], [300, 300], +wxTE_MULTILINE); $self->{text}->AppendText("Use Your IP $ipaddr:8087 on your devi +ce.\n"); $self->{text}->AppendText("Connection From: "); $self->{text}->AppendText($addr->peerhost()); $self->{text}->AppendText("\n"); $self->{text}->AppendText("Received: $_"); } return $self; #This has something to do with it? Return where??? } }
use IO::Socket; use Sys::Hostname; my($ipaddr)=inet_ntoa((gethostbyname(hostname))[4]); $remote = IO::Socket::INET->new( Proto => 'tcp', PeerAddr=> "$ipaddr:8087", Reuse => 1, ) or die "$!"; print "Connected to ", $remote->peerhost, " on port: ", $remote->peerport, "\n"; $remote->autoflush(1); # Send immediately while (<>) { print $remote " "; print $remote "sendplc "; print $remote $_; # Send to Server }#Want to keep the client running.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Wx Server reform
by ww (Archbishop) on Jun 03, 2012 at 12:24 UTC | |
by gg4000 (Novice) on Jun 03, 2012 at 13:08 UTC | |
by ww (Archbishop) on Jun 03, 2012 at 14:24 UTC | |
by gg4000 (Novice) on Jun 03, 2012 at 15:00 UTC | |
by afoken (Chancellor) on Jun 03, 2012 at 15:35 UTC | |
by ww (Archbishop) on Jun 03, 2012 at 16:03 UTC | |
|