Algorithms_in_C 1.0.0
Set of algorithms implemented in C.
|
Server-side implementation of [Remote Command Execution Using UDP](https://www.imperva.com/learn/ddos/udp-user-datagram-protocol/) More...
#include <arpa/inet.h>
#include <netdb.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
#include <errno.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
Macros | |
#define | PORT 10000 |
For the type in_addr_t and in_port_t For structures returned by the network database library - formatted internet addresses and port numbers For in_addr and sockaddr_in structures For macro definitions related to the creation of sockets For definitions to allow for the porting of BSD programs. | |
Functions | |
void | error () |
Utility function used to print an error message to stderr . | |
int | main () |
Main function. | |
Server-side implementation of [Remote Command Execution Using UDP](https://www.imperva.com/learn/ddos/udp-user-datagram-protocol/)
The algorithm is based on the simple UDP client and server model. It runs an infinite loop which takes user input and sends it to the server for execution. The server receives the commands and executes them until the user exits the loop. In this way, Remote Command Execution using UDP is shown using the server-client model & socket programming
#define PORT 10000 |
For the type in_addr_t and in_port_t For structures returned by the network database library - formatted internet addresses and port numbers For in_addr and sockaddr_in structures For macro definitions related to the creation of sockets For definitions to allow for the porting of BSD programs.
To indicate what went wrong if an error occurs For specific bit size values of variables Variable types, several macros, and various functions for performing input and output Variable types, several macros, and various functions for performing general functions Various functions for manipulating arrays of characters
void error | ( | ) |
Utility function used to print an error message to stderr
.
It prints str
and an implementation-defined error message corresponding to the global variable errno
.
int main | ( | void | ) |
Main function.
Variable Declarations
< socket descriptors - Like file handles but for sockets
< character arrays to read and store string data for communication & Success message
< basic structures for all syscalls and functions that deal with internet addresses. Structures for handling internet addresses
size of address
The UDP socket is created using the socket function.
AF_INET (Family) - it is an address family that is used to designate the type of addresses that your socket can communicate with
SOCK_DGRAM (Type) - Indicates UDP Connection - UDP does not require the source and destination to establish a three-way handshake before transmission takes place. Additionally, there is no need for an end-to-end connection
0 (Protocol) - Specifies a particular protocol to be used with the socket. Specifying a protocol of 0 causes socket() to use an unspecified default protocol appropriate for the requested socket type.
Server Address Information
The bzero() function erases the data in the n bytes of the memory starting at the location pointed to, by writing zeros (bytes containing '\0') to that area.
We bind the server_addr to the internet address and port number thus giving our socket an identity with an address and port where it can listen for connections
htons - The htons() function translates a short integer from host byte order to network byte order
htonl - The htonl() function translates a long integer from host byte order to network byte order
These functions are necessary so that the binding of address and port takes place with data in the correct format
This binds the socket descriptor to the server thus enabling the server to listen for connections and communicate with other clients
If binding is unsuccessful
Communication between client and server
The bzero() function erases the data in the n bytes of the memory starting at the location pointed to, by writing zeros (bytes containing '\0') to that area. The variables are emptied and then ready for use
The server receives data from the client which is a command. It then executes the command.
The client then receives a response from the server when the command has been executed
The server and client can communicate indefinitely till one of them exits the connection
The client sends the server a command which it executes thus showing remote command execution using UDP
Close socket