ppp has asked for the wisdom of the Perl Monks concerning the following question:
I have written a script using perl and i have tested it using two different ways: (1)Using a wifi connection (I have router which is directly connected to server and i am connected to that router). When i run my script on wifi connection, I receive DHCPOffer with IP and when i send request than i receive DHCPNack on that Request. i don't know why ? (2) Using the same code when i connect using a dongle then i even don't receive DHCPDiscover it just kind of hang for about hours and there is no any kind of message from server.
Below is all my code :Actually could some one please give me solution for : (1) Why it give DHPCNACK when i use WIfi (through another roter) ? (2) Why the same code hangs while run through dongle (USB Modem internet device)?use IO::Socket::INET; use Net::DHCP::Packet; use Net::DHCP::Constants; my $result='false'; my $nowtime = localtime(time); print "\nprint $nowtime\n"; SocketCreation(); if ( $result eq 'true') { print "\nTRUE\n"; } else { print "\nFALSE \n"; } #########Here is the finction definition to SocketCreation ########### +################ sub SocketCreation() { my $br_addr = sockaddr_in( '67', inet_aton('255.255.255.255') ); my $xid = int( rand(0xFFFFFFFF) ); #my $chaddr = '00189BF9C1Dp'; my $chaddr = '0016cbb7c882'; my $socket = IO::Socket::INET->new( Proto => 'udp', Broadcast => 1, LocalPort => '68', ) or die "Can't create socket: $@\n"; print "\n please wait and have patience......:\n"; my $discover_packet = Net::DHCP::Packet->new( Xid => $xid, Chaddr => $chaddr, Flags => 0x8000, DHO_DHCP_MESSAGE_TYPE() => DHCPDISCOVER(), DHO_HOST_NAME() => 'Perrr', DHO_VENDOR_CLASS_IDENTIFIER() => 'perlr', ); print "/n just a check\n"; $socket->send( $discover_packet->serialize(), 0, $br_addr) or die "Error sending:$!\n"; my $buf = ''; print "/n just a check2\n"; $socket->recv( $buf, 1024) or die "recvfrom() failed:$!"; #print STDERR $socket->toString(); my $resp = new Net::DHCP::Packet($buf); print "Details:\n" . $resp->toString(); $ip_offerto=$resp->yiaddr(); print "\n IP we got from google is : $ip_offerto\n"; $result = ($ip_offerto =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) ? "t +rue":"false"; print $result; # create DHCP Packet REQUEST $request = Net::DHCP::Packet->new( Xid => 0x12345678, Ciaddr => $resp->yiaddr(), DHO_DHCP_MESSAGE_TYPE() => DHCPREQUEST(), DHO_VENDOR_CLASS_IDENTIFIER() => 'ShekharsIPRequ +est', DHO_DHCP_REQUESTED_ADDRESS() => $resp->yiaddr(), ); print"\nSending REQUEST to server\n"; print $request->toString(); $socket->send($request->serialize(),0,$br_addr) or die "Error sending:$!\n"; print "\nWaiting for response from server\n"; $socket->recv($buf, 4096) || die("recv:$!"); print "\nGot response\n"; $resp = new Net::DHCP::Packet($buf); print STDERR $resp->toString(); close($socket); }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: why i don't receive DHCPDiscover message from server using dongle and why same code give DHCPNac on wifi
by Perlbotics (Archbishop) on Jan 11, 2015 at 18:16 UTC | |
by ppp (Acolyte) on Jan 11, 2015 at 18:35 UTC | |
by LanX (Saint) on Jan 11, 2015 at 19:21 UTC | |
|
Re: why i don't receive DHCPDiscover message from server using dongle and why same code give DHCPNac on wifi
by VinsWorldcom (Prior) on Jan 12, 2015 at 19:36 UTC | |
| A reply falls below the community's threshold of quality. You may see it by logging in. |