Date: Wed, 15 Dec 2021 12:47:27 +0100 (CET) From: Ronald Klop via freebsd-current <freebsd-current@freebsd.org> To: Piper H <potthua@gmail.com> Cc: freebsd-current@freebsd.org Subject: Re: question on socket server Message-ID: <1432797344.570.1639568847473@localhost> In-Reply-To: <CA%2BGLnbhqwAWJYDxO0MV27mXhvyqWBdPPnAVd6mfQdiNWvuvahA@mail.gmail.com> References: <CA%2BGLnbiqXQDfMLovYgipiLjSvRSWk%2B1ukDrh779=zZDt3P2L7Q@mail.gmail.com> <1412287950.345.1639565502579@localhost> <CA%2BGLnbhqwAWJYDxO0MV27mXhvyqWBdPPnAVd6mfQdiNWvuvahA@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
------=_Part_569_1908596974.1639568847444 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit 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 <potthua@gmail.com> Datum: woensdag, 15 december 2021 11:55 Aan: Ronald Klop <ronald-lists@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-lists@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 <potthua@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 >>> >>> >>> >> > ------=_Part_569_1908596974.1639568847444--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1432797344.570.1639568847473>