Your SlideShare is downloading. ×
0
Perl Programming                 Course            Network programmingKrassimir BerovI-can.eu
Contents1. Sockets, servers and clients2. TCP/IP, UDP sockets3. Unix Domain Socket (UDS) sockets4. IO::Socket5. HTTP and S...
Sockets, servers and clients• Socket  • an end-point of a bi-directional communication link    in the Berkeley sockets API...
Sockets, servers and clients• Server  • An application or device that performs    services for connected clients as part o...
Sockets, servers and clients• Client  • An application or system that accesses a    (remote) service on another computer  ...
TCP/IP, UDP sockets• An Internet socket is composed of  • Protocol (TCP, UDP, raw IP)  • Local IP address  • Local port  •...
Unix Domain Socket• A Unix domain socket (UDS)  or IPC socket  • inter-process communication socket  • a virtual socket  •...
IO::Socket• IO::Socket - Object interface to socket  communications  • built upon the IO::Handle interface and inherits   ...
IO::Socket• IO::Socket – Example (TCP/IP)  #io-socket-tcp-client.pl  use IO::Socket;  my $sock = IO::Socket::INET->new(   ...
IO::Socket• IO::Socket – Example 2 (TCP/IP)  #io-socket-tcp-server.pl  use IO::Socket;  my ($host, $port, $path ) = ( loca...
IO::Socket• IO::Socket – Example (UDS) #io-socket-uds-server.pl use IO::Socket; my $file = "./udssock"; unlink $file; my $...
IO::Socket• IO::Socket – Example 2 (UDS) #io-socket-uds-client.pl use IO::Socket; my $server = IO::Socket::UNIX->new(     ...
IO::Socket• IO::Socket – Example (UDP) #io-socket-udp-server.pl use IO::Socket; my $port = 4444; my $server = new IO::Sock...
IO::Socket• IO::Socket – Example 2 (UDP) #io-socket-udp-client.pl use IO::Socket; my $host = localhost; my $port = 4444; m...
HTTP and SMTP• HTTP• SMTP
Sending Mail• Net::SMTP #smtp.pl use Net::SMTP; my $smtp = Net::SMTP->new(     Host => localhost,     Timeout => 30,     H...
LWP and WWW::Mechanize• LWP - The World-Wide Web library for Perl  • provides a simple and consistent application    progr...
LWP and WWW::Mechanize• WWW::Mechanize - Handy web browsing in a  Perl object  • helps you automate interaction with a web...
LWP and WWW::Mechanize• WWW::Mechanize - Example  • helps you automate interaction with a website  • well suited for use i...
LWP and WWW::Mechanize• Example – getting product data from a site #www_mech.pl use strict; use warnings; use MyMech; use ...
Network programming• Resources  • Beginning Perl    (Chapter 14 – The World of Perl/IPC and    Networking)  • Professional...
Network programmingQuestions?
Upcoming SlideShare
Loading in...5
×

Network programming

756

Published on

This is the thirteenth set of slides from a Perl programming course that I held some years ago.
I want to share it with everyone looking for intransitive Perl-knowledge.
A table of content for all presentations can be found at i-can.eu.
The source code for the examples and the presentations in ODP format are on https://github.com/kberov/PerlProgrammingCourse

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
756
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Network programming"

  1. 1. Perl Programming Course Network programmingKrassimir BerovI-can.eu
  2. 2. Contents1. Sockets, servers and clients2. TCP/IP, UDP sockets3. Unix Domain Socket (UDS) sockets4. IO::Socket5. HTTP and SMTP6. LWP and WWW::Mechanize
  3. 3. Sockets, servers and clients• Socket • an end-point of a bi-directional communication link in the Berkeley sockets API • Berkeley sockets API allows communications between hosts or between processes on one computer • One of the fundamental technologies underlying the Internet. • A network socket is a communication end-point unique to a machine communicating on an Internet Protocol-based network, such as the Internet. • Unix domain socket, an end-point in local inter-process communication
  4. 4. Sockets, servers and clients• Server • An application or device that performs services for connected clients as part of a client-server architecture • An application program that accepts connections in order to service requests by sending back responses • Example: web servers(Apache), e-mail servers(Postfix), file servers
  5. 5. Sockets, servers and clients• Client • An application or system that accesses a (remote) service on another computer system known as a server • Example: Web browsers (Internet Explorer, Opera, Firefox) Mail Clients (Thunderbird, KMail, MS Outlook)
  6. 6. TCP/IP, UDP sockets• An Internet socket is composed of • Protocol (TCP, UDP, raw IP) • Local IP address • Local port • Remote IP address • Remote port
  7. 7. Unix Domain Socket• A Unix domain socket (UDS) or IPC socket • inter-process communication socket • a virtual socket • similar to an internet socket • used in POSIX operating systems for inter- process communication • connections appear as byte streams, much like network connections, • all data remains within the local computer
  8. 8. IO::Socket• IO::Socket - Object interface to socket communications • built upon the IO::Handle interface and inherits all its methods • only defines methods for operations common to all types of socket • Operations, specified to a socket in a particular domain have methods defined in sub classes • will export all functions (and constants) defined by Socket
  9. 9. IO::Socket• IO::Socket – Example (TCP/IP) #io-socket-tcp-client.pl use IO::Socket; my $sock = IO::Socket::INET->new( PeerAddr => $host, PeerPort => "$port", Proto => tcp, Timeout => 60 ) or die $@; die "Could not connect to $host$/" unless $sock->connected; #...
  10. 10. IO::Socket• IO::Socket – Example 2 (TCP/IP) #io-socket-tcp-server.pl use IO::Socket; my ($host, $port, $path ) = ( localhost, 8088 ); my $server = new IO::Socket::INET ( LocalAddr => $host, LocalPort => $port, Proto => tcp, Listen => 10, Type => SOCK_STREAM, ReuseAddr => 1 ); print "Server ($0) running on port $port...n"; while (my $connection = $server->accept) { #...
  11. 11. IO::Socket• IO::Socket – Example (UDS) #io-socket-uds-server.pl use IO::Socket; my $file = "./udssock"; unlink $file; my $server = IO::Socket::UNIX->new( Local => $file, Type => SOCK_STREAM, Listen => 5 ) or die $@; print "Server running on file $file...n"; #...
  12. 12. IO::Socket• IO::Socket – Example 2 (UDS) #io-socket-uds-client.pl use IO::Socket; my $server = IO::Socket::UNIX->new( Peer => "./udssock", ) or die $@; # communicate with the server print "Client connected.n"; print "Server says: ", $server->getline; $server->print("Hello from the client!n"); $server->print("And goodbye!n"); $server->close; #...
  13. 13. IO::Socket• IO::Socket – Example (UDP) #io-socket-udp-server.pl use IO::Socket; my $port = 4444; my $server = new IO::Socket::INET( LocalPort => $port, Proto => udp, ); die "Bind failed: $!n" unless $server; print "Server running on port $port...n"; #...
  14. 14. IO::Socket• IO::Socket – Example 2 (UDP) #io-socket-udp-client.pl use IO::Socket; my $host = localhost; my $port = 4444; my $client = new IO::Socket::INET( PeerAddr => $host, PeerPort => $port, Timeout => 2, Proto => udp, ); $client->send("Hello from client") or die "Send: $!n"; my $message; $client->recv($message, 1024, 0); print "Response was: $messagen"; #...
  15. 15. HTTP and SMTP• HTTP• SMTP
  16. 16. Sending Mail• Net::SMTP #smtp.pl use Net::SMTP; my $smtp = Net::SMTP->new( Host => localhost, Timeout => 30, Hello =>localhost, ); my $from = me@example.com; my @to = (you@example.org,); my $text = $ARGV[0]|| проба; my $mess = "ERROR: Cant send mail using Net::SMTP. "; $smtp->mail( $from ) || die $mess; $smtp->to( @to, { SkipBad => 1 } ) || die $mess; $smtp->data( $text ) || die $mess; $smtp->dataend() || die $mess; $smtp->quit();
  17. 17. LWP and WWW::Mechanize• LWP - The World-Wide Web library for Perl • provides a simple and consistent application programming interface (API) to the World-Wide Web • classes and functions that allow you to write WWW clients • also contains modules that help you implement simple HTTP servers • supports access to http, https, gopher, ftp, news, file, and mailto resources • transparent redirect, parser for robots.txt files etc...
  18. 18. LWP and WWW::Mechanize• WWW::Mechanize - Handy web browsing in a Perl object • helps you automate interaction with a website • well suited for use in testing web applications • is a proper subclass of LWP::UserAgent • you can also use any of the LWP::UserAgents methods.
  19. 19. LWP and WWW::Mechanize• WWW::Mechanize - Example • helps you automate interaction with a website • well suited for use in testing web applications • is a proper subclass of LWP::UserAgent • you can also use any of the LWP::UserAgents methods.
  20. 20. LWP and WWW::Mechanize• Example – getting product data from a site #www_mech.pl use strict; use warnings; use MyMech; use Data::Dumper; #Config $MyMech::Config->{DEBUG}=0; my $Config = $MyMech::Config; #print Dumper($Config); my $mech = MyMech->new( agent => $Config->{agent}, cookie_jar => $Config->{cookie_jar}, autocheck => $Config->{autocheck}, onwarn => $Config->{onwarn} ); #...
  21. 21. Network programming• Resources • Beginning Perl (Chapter 14 – The World of Perl/IPC and Networking) • Professional Perl Programming (Chapter 23 – Networking with Perl) • perldoc perlipc • perldoc IO::Socket • http://en.wikipedia.org/wiki/Berkeley_sockets • Perl & LWP (http://lwp.interglacial.com/)
  22. 22. Network programmingQuestions?
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×