Re: [問題] Socket - Server 和 Client 傳訊問題
---------Server端程式---------
#!/usr/bin/perl
use strict;
use threads;
use IO::Socket;
my $server = IO::Socket::INET->new(
LocalPort => 8088,
Type => SOCK_STREAM,
Listen => 32, # 最多的等待連線數量
Reuse =>1
);
while(my $client = $server->accept()) {
my $thrs = threads->create("client_handler", $client); # "client_handler"-執行緒;$client-傳入的參數
$thrs->join(); # 結束執行緒
}
sub client_handler {
my $client = shift;
my $msg = '';
$/ = "\n";
while(<$client>) {
chomp;
$_ = "CC ".$_; # 在讀進來的每一列開頭加上"CC"
$msg .= $_."\n";
}
print $client "$msg"; # 把修改後的資料傳回給Client
$client->shutdown(1); # client 停止寫入資料
$client->close(); # 關閉 client 的 socket
}
$server->close(); # 關閉 server 的 socket
----------------Client端程式----------------------
#!/usr/bin/perl
use strict;
use IO::Socket;
my $server = IO::Socket::INET->new(
PeerAddr => "127.0.0.1",
PeerPort => 8088
);
open FILE, "< data"
or die "can't open 'data'";
$/ = "\n";
while(<FILE>)
{
print $server $_; #傳訊息給 Server 端
}
close FILE;
print "test1\n"; # 這一行有印出
open OUT, "> data.new"
or die "can't open 'data.new'";
while(<$server>)
{
print "test2..."; # 這一行沒有印出,所以程式卡在上面那一行
print OUT;
}
close OUT;
print "test3...";
$server->close();
---------------以上程式修改自LiloHuang------------------------------------
--------------------分隔線-------------------------
Client傳完檔案後,Server傳回修改後的內容(紫色那一行)
Client等待Server把修改後的內容傳回來(綠色那一行),
但是,程式就一直停在綠色那一行,
是Client接收不到Server的訊息嗎?
找了兩天的BUG,昨天已經麻煩LiloHuang一次,
今天又要來打擾了~
謝謝!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.208.44
※ 編輯: decken 來自: 203.73.239.220 (08/07 16:06)
※ 編輯: decken 來自: 203.73.239.220 (08/07 16:09)
推
08/07 16:38, , 1F
08/07 16:38, 1F
推
08/07 16:38, , 2F
08/07 16:38, 2F
推
08/07 17:06, , 3F
08/07 17:06, 3F
推
08/07 17:06, , 4F
08/07 17:06, 4F
討論串 (同標題文章)
Perl 近期熱門文章
PTT數位生活區 即時熱門文章