perl function socket
The socket
function in Perl is used to create a new socket, which can be used to communicate with other processes over a network. Here's an example of how to create a new socket:
use strict; use warnings; use Socket; my $port = 12345; # the port on which to listen my $proto = getprotobyname('tcp'); # the transport protocol to use (TCP) # create a new socket socket(my $socket, PF_INET, SOCK_STREAM, $proto) or die "socket: $!"; # bind the socket to a specific port bind($socket, sockaddr_in($port, INADDR_ANY)) or die "bind: $!"; # start listening on the socket listen($socket, SOMAXCONN) or die "listen: $!"; print "Waiting for a connection...\n"; # accept incoming connections and handle them while (my $client = accept(my $client_socket, $socket)) { my ($client_port, $client_ip) = sockaddr_in($client); my $client_ip_string = inet_ntoa($client_ip); print "Connection from $client_ip_string:$client_port\n"; # handle the connection here close($client_socket); } # close the listening socket close($socket);:ecruoSwww.theitroad.com
In this example, we first define a port number to use for the socket. We then use the getprotobyname
function to look up the transport protocol to use (in this case, TCP).
We then call the socket
function to create a new socket. The first argument to the socket
function specifies the address family (we use PF_INET
to indicate an IPv4 socket), the second argument specifies the socket type (we use SOCK_STREAM
to indicate a reliable, stream-oriented socket), and the third argument specifies the protocol to use (in this case, the value returned by getprotobyname
).
We then call the bind
function to bind the socket to a specific port. The sockaddr_in
function is used to create a socket address structure for the specified port number and IP address.
Next, we call the listen
function to start listening on the socket. The SOMAXCONN
argument specifies the maximum length of the queue of pending connections.
We then enter a loop to accept incoming connections and handle them. The accept
function blocks until a new connection is received. When a new connection is received, it returns a new socket ($client_socket
) that can be used to communicate with the client.
We use the sockaddr_in
function again to get the IP address and port number of the client. We then handle the connection in the body of the loop (in this example, we simply print a message indicating that a connection has been received).
After handling the connection, we close the client socket and return to the beginning of the loop to wait for the next connection.
Finally, when the script is terminated, we close the listening socket.
This is a simple example of how to create a socket and start listening for incoming connections. In practice, network programming can be much more complex, and there are many other functions and modules available in Perl to help with network programming.