Hi,
Your program first waits for the first client to connect. So nothing is written
anywhere.
You can check by running "nc -v localhost 6666" in another terminal.
After the first client disconnects it keeps looping in the while and the print
will return 0 which means failure.
Something like this will improve things.
if (0 == print "test\015\012") {
return;
}
Regards and happy hacking,
Ronald.
PS: I think this does not have to do a lot with freebsd-current. Might move it
to https://lists.freebsd.org/subscription/freebsd-perl or some generic perl
forum/ML.
Van: Piper H <pott...@gmail.com>
Datum: woensdag, 15 december 2021 11:55
Aan: Ronald Klop <ronald-li...@klop.ws>
CC: freebsd-current@freebsd.org
Onderwerp: Re: question on socket server
But I write this program to listen on port 6666 who sends a random str to the
socket every 0.25 second. And there is no client connecting to the port. The
server just runs there without problem. :( So I am not sure enough...
use strict;
package MyPackage;
use base qw(Net::Server);
my @fruit=qw(
...
);
sub process_request {
my $self = shift;
$| = 1;
my $max = scalar @fruit;
while (1) {
my $id1 = int(rand($max));
my $str = $fruit[$id1];
print "$str\015\012";
select(undef, undef, undef, 0.25);
}
}
MyPackage->run(port => 6666, ipv => '*');
On Wed, Dec 15, 2021 at 6:51 PM Ronald Klop <ronald-li...@klop.ws> wrote:
Hi,
Just try it!
I think you will get an error that you are writing to a not-connected socket.
From "man 2 write":
" [EPIPE] An attempt is made to write to a socket of type SOCK_STREAM
that is not connected to a peer socket."
See also "man 2 send" and "man 2 socket" for a lot more information.
So it depends a bit on the type of socket you created.
Regards and happy hacking,
Ronald.
Van: Piper H <pott...@gmail.com>
Datum: woensdag, 15 december 2021 07:52
Aan: freebsd-current@freebsd.org
Onderwerp: question on socket server
Hello
I have little knowledge about socket programming.
I have a question that, if I have made a socket server, listening on a
port. The server prints data to the socket, but there is never a client
connection to the port, and the data is never consumed. What will happen to
the server then? will the OS kernel be flushed by junk bytes?
Thanks for your help.
Piper