> -----Original Message----- > From: Scott L Ryan [mailto:scotty@onetel.net.uk] > Sent: Wednesday, February 06, 2002 7:29 AM > To: beginners@perl.org > Subject: socket help, last time i promise ;) > > > I want to display a message when a client connects to the server. > > msg> > > right now, I cannot seem to display that message until I have received > something from the client and I want to display it before the client > sends anything. puzzling.. > > #!/usr/local/bin/perl > > use Socket; > > if (!@ARGV) { > print "Script cannot be called with no Port Number.... doh!\n"; > } else { > $server_port = $ARGV[0]; > > socket(SERVER, PF_INET, SOCK_STREAM, getprotobyname('tcp')); > > setsockopt(SERVER, SOL_SOCKET, SO_REUSEADDR, 1); > > $my_addr = sockaddr_in($server_port, INADDR_ANY); > > bind(SERVER, $my_addr) or die "couldnt bind"; > listen(SERVER, SOMAXCONN) or die "cant listen"; I recommend you use IO::Socket instead of this. Much cleaner interface. > while (accept(CLIENT, SERVER)) { OK, here's where we get an incoming connection. Why aren't you displaying your message right here? Or maybe I don't understand what you mean by "display a message". Do you mean on the server or on the client? > *STDOUT = *CLIENT; > print "msg>"; This prompt goes to the client. You need to set autoflush on, because the prompt will not get to the client. If you use IO::Socket, it will take care of that for you. > $input = <CLIENT>; Here's where we block, waiting for the client to send a line. I can't see where you are "displaying a message".Thread Previous | Thread Next