我試圖在運行應用程序的同一臺PC上模擬TCP服務器。 我不知道它是否可以在Perl中完成,因爲我不是很有經驗。TCP服務器多次接收和響應
隨着代碼下面的第一個答覆工作,但我不知道如何實現第二個。
#!/usr/bin/perl -w
use IO::Socket::INET;
use strict;
my $socket = IO::Socket::INET->new('LocalPort' => '3000',
'Proto' => 'tcp',
'Listen' => SOMAXCONN)
or die "Can't create socket ($!)\n";
print "Server listening\n";
while (my $client = $socket->accept) {
my $name = gethostbyaddr($client->peeraddr, AF_INET);
my $port = $client->peerport;
while (<$client>) {
print "$_";
print $client "RESPONSE1";
}
close $client
or die "Can't close ($!)\n";
}
die "Can't accept socket ($!)\n";
編輯:謝謝你們的輸入,我結束了與PHP完成它和它的工作,耶!
你必須'fork'。看到這個問題,例如http://stackoverflow.com/questions/7662711/perl-forked-socket-server-stops-accepting-connections-when-a-client-disconnects –
「fork」或使用事件驅動的io,例如, [使用Event模塊在Perl中進行事件驅動編程](http://cpansearch.perl.org/src/JPRIT/Event-1.20/Tutorial.pdf) – ErikR
即使Event的作者不再推薦它,嘗試AnyEvent,POE, IO :: Async或類似的API來試試EV – MkV