8
ben perl'de soket bağlantısı kullanarak basit bir kod programlama ediyorum: Sonra bir döngü kullanarak veri göndermeKontrol eğer
$sock = new IO::Socket::INET(
PeerAddr => '192.168.10.7',
PeerPort => 8000,
Proto => 'tcp');
$sock or die "no socket :$!";
:
while...
print $sock $str;
...loop
bir yolu var mı Döngüye bağlantıyı kontrol etmek için bir komut eklemek? gibi şey:
while...
socket is up?
yes => send data
no => connect again and the continue with loop
...loop
DÜZENLEME MY CODE ADD:
my $sock = new IO::Socket::INET(
PeerAddr => '192.168.10.152',
PeerPort => 8000,
Proto => 'tcp');
$sock or die "no socket :$!";
open(my $fh, '<:encoding(UTF-8)', 'list1.txt')
or die "Could not open file $!";
while (my $msdn = <$fh>) {
my $port="8000";
my $ip="192.168.10.152";
unless ($sock->connected) {
$sock->connect($port, $ip) or die $!;
}
my $str="DATA TO SEND: " . $msdn;
print $sock $str;
}
close($sock);
evet ama bu her zaman http://perldoc.perl.org/IO/Socket.html#connected yeterli değildir (ayrıca 'dönüş değerini kontrol etmelidir -> write()') –
Üzgünüm ama anlamıyorum Zaten bir dosyayı okuyabilmek için bir döngüye sahibim, hat satırında ve sonra da sunucunun içine veri gönderiyorum. Bu mükemmel çalışır, Ama, eğer, bazı nedenlerden dolayı, sunucu, tüm satırları bitirmek bitirmeden uygulama, bağlantıyı kapatır. $ socket-> bağlı değilse, $ socket-> connect'i nasıl uygulayabilirim? bir şekilde döngüden veri göndermeye devam etmeden önce tekrar bir yuva oluşturabilir (tekrar bağlanabilirsiniz). –
@LucasRey Yeni bir soket oluşturmanız gerektiğini düşünmüyorum. Sadece bu bağlantıyı yeniden yapmak istiyorsunuz. Döngünün üst kısmına koyun (benim (while) (1) sadece örnekte bir döngü var) ve bundan sonra yaz. Bu yapmalı. – simbabque