#!/usr/bin/perl use strict; use warnings; use IO::Socket::INET; my $port = 5000; my $IP = "127.0.0.1"; # flush after every write $| = 1; my $server_socket = IO::Socket::INET->new( #PeerAddr => inet_ntoa(INADDR_BROADCAST), PeerPort => $port, PeerAddr => $IP, #LocalPort => $port, Proto => 'udp', Type => SOCK_DGRAM, LocalAddr => 'localhost', Broadcast => 1, ReuseAddr => 1, ReusePort => 1 ) or die "Can't bind: $@\n"; my $recieved_data; printf("\nServer is up, listens on PORT: ".$port." waiting for client...\n"); while (1) { # read operation on the socket $server_socket->recv( $recieved_data , 1024 ) or die "Server error received: $!\n"; #get the peerhost and peerport at which the recent data received. my $peer_address = $server_socket->peerhost(); my $peer_port = $server_socket->peerport(); print "\n($peer_address , $peer_port) said : $recieved_data"; #send the data to the client at which the read/write operations done recently. my $data = "Echo: ".$recieved_data.""; $server_socket->send( $data ) or die "Server error send: $!\n"; } $server_socket->close();