2016-11-25 35 views
0

IPアドレスを使用してメッセージを送受信するIO :: Socket :: INETモジュールに基づいて、2つのタイプのプログラムがWebサイトに見つかりました。IO :: Socket :: INETを使用して単一のプロンプトでメッセージを送受信する

メッセージ受信プログラム:

use IO::Socket::INET; 
my $text; 
$MySocket=new IO::Socket::INET->new (LocalPort=>1234,Proto=>'udp'); 
while(1) 
{ 
    $MySocket->recv($text,128); 
    $hostip=$MySocket->peerhost(); 
    if($text ne '') 
    { 
     print "\nReceived message from $hostip: $text \n"; 
     print "Command Output:\n"; 
     #system("$text"); 
     print "\n"; 
    } 
    else 
    { 
     print "Client has exited!"; exit 1; 
    } 
} 

送信メッセージ:

use IO::Socket::INET; 
#Enter Destination IP Message 
print "Please Enter the destination IP: \n"; 
$DestinationIP = <STDIN>; 
chomp $DestinationIP; 

#Enter message to sent to Server 
print "Please Enter your message: \n"; 
$MySocket=new IO::Socket::INET-> new(PeerPort=>1234,Proto=>1234,Proto=>'udp',PeerAddr=>$DestinationIP); 
#$MySocket->send($msg); 

while($msg=<STDIN>) 
{ 
    chomp $msg; 
    if($msg ne '') 
    { 
     print "\n Sending $msg"; 
     if($MySocket->send($msg)) 
     { 
      print "done \n"; 
      print "\nPlease Enter another message:"; 
     } 
    } 
} 

そして、私の質問は/ハンドルシングルMS-DOSプロンプトで、これらのプログラムをマージする方法です。例えばのために

`Receiving and sending message in Single Prompt.` 

心からの謝罪、私は意味せずに任意の仮想的な疑問を投げかけています。

+0

を参照してください、あなただけ受け取り、単一のスクリプトに送るの両方を実行したいですか? 2つのプログラムを1つのみ実行する必要はありませんか? –

+0

@Gerry:はい。絶対にチャットです。 – ssr1012

+0

ok、私は迅速に回答を投稿させてください。もう1つの質問ですが、Receivedメッセージの値を使用してsend関数経由で送信したいですか? –

答えて

1

だから、これはまっすぐに取得するために次の行23へのコメントとライン26

use strict; 
use warnings; 
use IO::Socket::INET; 
my @Destination; 
my $text; 
my $Receive_Socket=new IO::Socket::INET->new (LocalPort=>1234,Proto=>'udp'); 
while(1) 
{ 
$Receive_Socket->recv($text,128); 
my $hostip=$Receive_Socket->peerhost(); 
if($text ne '') 
{ 
    print "\nReceived message from $hostip: $text \n"; 
    print "Command Output:\n"; 
    #system("$text"); 
    print "\n"; 

} 
else 
{ 
    print "Client has exited!"; exit 1; 
} 
push @Destination, $hostip; # Push the IP Received to where you will send it 
} 
my $DestinationIP = $Destination[0]; # Here we assign the original $hostip to $DestinationIP 
chomp $DestinationIP; 

print "Please Enter your message: \n"; 
my $Send_Socket=new IO::Socket::INET-> new(PeerPort=>1234,Proto=>1234,Proto=>'udp',PeerAddr=>$DestinationIP); 
while(my $msg=<STDIN>) 
{ 
chomp $msg; 
if($msg ne '') 
{ 
    print "\n Sending $msg"; 
    if($Send_Socket->send($msg)) 
    { 
     print "done \n"; 
     print "\nPlease Enter another message:"; 
    } 
} 
} 
+0

私の質問は、私がIPアドレスを入力するにはどうすればいいですか? – ssr1012

+0

どこから来たIPアドレスですか?受信の '$テキスト'に?私はそれが不明です。 –

+0

'$ Destination' ...? – ssr1012

関連する問題