में मूल नेटवर्क चैट ऐप मैं सीखने के उद्देश्यों के लिए पर्ल में एक बुनियादी नेटवर्क चैट ऐप लिखने की कोशिश कर रहा हूं। मेरे पास वर्तमान में एक सर्वर और क्लाइंट प्रोग्राम है जो लगभग वैसे ही कार्य करता है जैसा मैं चाहता हूं। एकाधिक ग्राहक सर्वर से कनेक्ट हो सकते हैं और इससे संदेश भेज सकते हैं। हालांकि, मुझे सच में यकीन नहीं है कि एक क्लाइंट से दूसरे क्लाइंट में संदेश भेजने के बारे में कैसे जाना है और यहां सही दिशा में धक्का की सराहना होगी। यहां मेरे पास अभी तक कोड है, विचार?पर्ल
नोट: यह नेटवर्किंग का उपयोग करने या उचित परियोजना के लिए पर्ल का उपयोग करने का मेरा पहला प्रयास है, इसलिए इस बारे में कोई अन्य मार्गदर्शन भी सराहना की जाएगी।
chat_server.pl
#!/usr/bin/perl -w
# chat_server.pl
use strict;
use IO::Socket::INET;
my $port = shift or die "Port required!\n";
my $socket = IO::Socket::INET->new(
LocalPort => $port,
Proto => 'tcp',
Listen => SOMAXCONN
) or die "Can't create socket: $!!\n";
my $child;
print "Listening for clients on $port...\n";
REQUEST:
while(my $client = $socket->accept) {
my $addr = gethostbyaddr($client->peeraddr, AF_INET);
my $port = $client->peerport;
if($child = fork) {
print "New connection from $addr:$port\n";
close $client;
next REQUEST;
} die "fork failed!\n" unless defined $child;
while (<$client>) {
print "[$addr:$port] says: $_";
print $client "[$addr:$port] says: $_";
}
}
close $socket;
chat_client.pl
#!/usr/bin/perl -w
# chat_client.pl
use strict;
use IO::Socket::INET;
my $port = shift or die "No port\n";
my $server = shift or die "No server\n";
my $client_socket = IO::Socket::INET->new(
PeerPort => $port,
PeerAddr => $server,
Proto => 'tcp'
) or die "Can't create send socket: $!!\n";
my $child;
if($child = fork) {
while(1) {
sleep(1);
print scalar <$client_socket>;
}
}
die "fork failed!\n" unless defined $child;
print "Connected to $server:$port!\n";
do {
print "> ";
print $client_socket $_ if defined $_;
} while(<STDIN>);
print "Closing connection";
close $client_socket;
वास्तव में अनुभव के अपने स्तर के लिए बहुत अच्छा है यही कारण है कि।एकमात्र चीज जो मैं सीधे कहूंगा वह यह है कि आपको यह सुनिश्चित करना चाहिए कि आपकी सीखने की सामग्री अद्यतित है। कमांड लाइन या शेबांग लाइन पर '-w' लंबे समय से बेहतर' उपयोग चेतावनियों 'द्वारा अधिग्रहण किया गया है। 'If' – Borodin