http://www.perlmonks.org?node_id=11074


in reply to RE: MP3 server with IO::Socket
in thread MP3 server with IO::Socket

If the server is not writting anything to the socket, then it was not able to open the song, or your client is just disconnecting. Make sure the server has acess to read all the songs in your playlist. The playlist should have one song per line, with the absolute path (ie /usr/lcoal/share/music/mysong.mp3 or something like that).

If that doesnt help, then what is your actuall error. It could be a problem with your mp3 client. I assume you can play music with the client without the server?

If you cant resolve your problem, provide a more exact description of the problems. Or try to step through it with the debugger.

You can always telnet to the server (assuming it is running on port 8000) and see the file contents being written to you. telnet localhost 8000 This will cause the server to spew out the file contents. If no random characters appear on your screen, then the server was not able to open any files in you playlist.

Replies are listed 'Best First'.
RE: RE: RE: MP3 server with IO::Socket
by Anonymous Monk on May 21, 2000 at 09:43 UTC
    It's printing out the song, and it's sending it to the port, but it's cycling through songs VERY fast.
      Well if you telnet to the port and it is printing the binary to the screen, then the server works. That is all it does. The whole purpose is to print binary to the socket. I would bet that the problem lies in your mp3 player, what player are you using and what OS are you using. I have been using this server in some form or another for about a year now, so I nearly positive that the problems you are having are not related to the server code (unless they are OS specific, in which case I probably cant help). But if you can track down the problems and the cause does lay in my code, then let me know and I will make the corrections.
        Hi folks, I've been experiencing the same problem that was reported earlier ("it seems to be going very fast"). I'm on Win32 (both NT4 and Win2k) and played around with the script for a while before figuring out a fix. It looks like a:
        BINMODE(SONG);
        fixes all. I also took out the forking-ness of the server, just to simplify the debug process, but I'm sure that's OK. With the fix in place, the code segment now looks like this:
        <text cut> ... #what song are we playing warn( "play song: $song\n"); #open the song, or continue to try another one open (SONG, $song) || next; #### NEW CODE #### binmode (SONG); #### END NEW CODE #### my $read_status = 1; my $print_status = 1; my $chunk; .... <end cut>
        I think this fix suggests that somewhere in the MP3's being streamed, read() was encountering what it thought was an EOF, where in fact it was misinterpreting the data. Am I right? (I guessed at binmode, read the cookbook, then understood)

        Hope this helps,

        Brainiac