Beruflich Dokumente
Kultur Dokumente
AIM:
Understanding and using the following commands
Ifconfig, netstat, ping, arp, telnet ,tftp,ftp.
DESCRIPTION:
IFCONFIG
NAME
ifconfig - configure a network interface
SYNOPSIS
ifconfig [interface]
ifconfig interface [aftype] options | address ...
DESCRIPTION
Ifconfig is used to configure the kernel-resident network interfaces. It is used at
boot time to set up interfaces as necessary.
If no arguments are given, ifconfig displays the status of the currently active
interfaces. If a single interface argument is given, it displays the status of the given
interface only; if a single -a argument is given, it displays the status of all
interfaces, even those that are down. Otherwise, it configures an interface.
ADDRESS FAMILIES
If the first argument after the interface name is recognized as the name of a
supported address family, that address family is used for decoding and displaying
all protocol addresses. Currently supported address families include inet (TCP/IP,
default), inet6 (IPv6), ax25 (AMPR Packet Radio), ddp (Appletalk Phase 2), ipx
(Novell IPX) and netrom (AMPR Packet radio).
1604-10-733-068
OPTIONS
interface
The name of the interface. This is usually a driver name followed by a unit
number, for example eth0 for the first Ethernet interface.
up
This flag causes the interface to be activated
down
This flag causes the driver for this interface to be shut down.
[-]arp
Enable or disable the use of the ARP protocol on this interface.
[-]promisc
Enable or disable the promiscuous mode of the interface
metric N
This parameter sets the interface metric.
mtu N
This parameter sets the Maximum Transfer Unit (MTU) of an interface.
dstaddr addr
Set the remote IP address for a point-to-point link (such as PPP).
netmask addr
Set the IP network mask for this interface.
add addr/prefixlen
Add an IPv6 address to an interface.
del addr/prefixlen
Remove an IPv6 address from an interface.
tunnel aa.bb.cc.dd
Create a new SIT (IPv6-in-IPv4) device, tunnelling to the given destination.
io_addr addr
Set the start address in I/O space for this device.
mem_start addr
Set the start address for shared memory used by this device
media type
Set the physical port or medium type to be used by the device
multicast
Set the multicast flag on the interface.
address
The IP address to be assigned to this interface.
1604-10-733-068
NETSTAT
NAME
netstat - Print network connections, routing tables, interface statistics, masquerade
connections, and multicast memberships
SYNOPSIS
netstat [address_family_options] [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [-all|-a] [--numeric|-n] [--numeric-hosts][--numeric-ports][--numeric-ports] [-symbolic|-N] [--extend|-e[--extend|-e]] [--timers|-o] [--program|-p] [--verbose|-v]
[--continuous|-c] [delay] netstat {--route|-r} [address_family_options] [--extend|e[--extend|-e]] [--verbose|-v] [--numeric|-n] [--numeric-hosts][--numeric-ports][-numeric-ports] [--continuous|-c] [delay] netstat {--interfaces|-i} [iface] [--all|-a] [-extend|-e[--extend|-e]] [--verbose|-v] [--program|-p] [--numeric|-n] [--numerichosts][--numeric-ports][--numeric-ports] [--continuous|-c] [delay] netstat {-groups|-g} [--numeric|-n] [--numeric-hosts][--numeric-ports][--numeric-ports] [-continuous|-c] [delay] netstat {--masquerade|-M} [--extend|-e] [--numeric|-n] [-numeric-hosts][--numeric-ports][--numeric-ports] [--continuous|-c] [delay] netstat
{--statistics|-s} [--tcp|-t] [--udp|-u] [--raw|-w] [delay] netstat {--version|-V} netstat
{--help|-h} address_family_options:
[--protocol={inet,unix,ipx,ax25,netrom,ddp}[,...]] [--unix|-x] [--inet|--ip] [--ax25]
[--ipx] [--netrom] [--ddp]
DESCRIPTION
Netstat prints information about the Linux networking subsystem. The type of
information printed is controlled by the first argument, as follows:
--route , -r
Display the kernel routing tables.
--groups , -g
Display multicast group membership information for IPv4 and IPv6.
--masquerade , -M
Display a list of masqueraded connections.
OPTIONS
1604-10-733-068
--verbose , -v
--numeric , -n
Show numerical addresses instead of trying to determine symbolic host, port or
user names.
--numeric-hosts
shows numerical host addresses but does not affect the resolution of port or user
names.
--numeric-ports
shows numerical port numbers but does not affect the resolution of host or user
names.
--numeric-users
shows numerical user IDs but does not affect the resolution of host or port names.
-c, --continuous
This will cause netstat to print the selected information every second continuously.
-e, --extend
Display additional information. Use this option twice for maximum detail.
-o, --timers
Include information related to networking timers.
-p, --program
Show the PID and name of the program to which each socket belongs.
-l, --listening
Show only listening sockets. (These are omitted by default.)
-a, --all
Show both listening and non-listening sockets. interfaces that are not marked
-F
Print routing information from the FIB. (This is the default.)
-C
Print routing information from the route cache.
PING
1604-10-733-068
NAME
ping, ping6 - send ICMP ECHO_REQUEST to network hosts
SYNOPSIS
ping [ -LRUbdfnqrvVaAB] [ -c count] [ -i interval] [ -l preload] [ -p pattern] [ -s
packetsize] [ -t ttl] [ -w deadline] [ -F flowlabel] [ -I interface] [ -M hint] [ -Q tos] [
-S sndbuf] [ -T timestamp option] [ -W timeout] [ hop ...] destination
DESCRIPTION
ping uses the ICMP protocol's mandatory ECHO_REQUEST datagram to elicit an
ICMP ECHO_RESPONSE from a host or gateway. ECHO_REQUEST datagrams
(``pings'') have an IP and ICMP header, followed by a struct timeval and then an
arbitrary number of ``pad'' bytes used to fill out the packet.
OPTIONS
-a
Audible ping.
-A
Adaptive ping.Allow pinging a broadcast address.
-B
Do not allow ping to change source address of probes.
-c count
Stop after sending count ECHO_REQUEST packets. With deadline option,
ping waits for count ECHO_REPLY packets, until the timeout expires.
-d
Set the SO_DEBUG option on the socket being used. Essentially, this socket
option is not used by Linux kernel.
-F flow label
Allocate and set 20 bit flow label on echo request packets. (Only ping6). If
value is zero, kernel allocates random flow label.
-f
Flood ping. For every ECHO_REQUEST sent a period ``.'' is printed, while
for ever ECHO_REPLY received a backspace is printed.
-i interval
Wait interval seconds between sending each packet.
-L
Suppress loopback of multicast packets.
-n
Numeric output only. No attempt will be made to lookup symbolic names for
host addresses.
1604-10-733-068
-p pattern
You may specify up to 16 ``pad'' bytes to fill out the packet you send. This is
useful for diagnosing data-dependent problems in a network
-Q tos
Set Quality of Service -related bits in ICMP datagrams. tos can be either
decimal or hex number.
-q
Quiet output. Nothing is displayed except the summary lines at startup time
and when finished.
-R
Record route. Includes the RECORD_ROUTE option in the
ECHO_REQUEST packet and displays the route buffer on returned packets.
-r
Bypass the normal routing tables and send directly to a host on an attached
interface
-s packetsize
Specifies the number of data bytes to be sent. The default is 56.
-S sndbuf
Set socket sndbuf. If not specified, it is selected to buffer not more than one
packet.
-t ttl
Set the IP Time to Live.
-U
Print full user-to-user latency (the old behaviour).
-v
Verbose output.
-V
Show version and exit.
-w deadline
Specify a timeout, in seconds, before ping exits regardless of how many
packets have been sent or received.
-W timeout
Time to wait for a response, in seconds.
ARP
NAME
arp - manipulate the system ARP cache
SYNOPSIS
arp [-evn] [-H type] [-i if] -a [hostname]
arp [-v] [-i if] -d hostname [pub]
1604-10-733-068
DESCRIPTION
Arp manipulates the kernel's ARP cache in various ways. The primary options are
clearing an address mapping entry and manually setting up one. For debugging
purposes, the arp program also allows a complete dump of the ARP cache.
OPTIONS
-v, --verbose
Tell the user what is going on by being verbose.
-n, --numeric
shows numerical addresses instead of trying to determine symbolic host,
port or user names.
-a [hostname], --display [hostname]
Shows the entries of the specified hosts.
-D, --use-device
Use the interface ifa's hardware address.
-e
Shows the entries in default (Linux) style.
TELNET
NAME
telnet - user interface to the TELNET protocol
SYNOPSIS
telnet [-8EFKLacdfrx ] [-X authtype ] [-b hostalias ] [-e escapechar ] [-k realm ] [l user ] [-n tracefile ] [host [port ] ]
DESCRIPTION
The telnet command is used to communicate with another host using the TELNET
protocol. If telnet is invoked without the host argument, it enters command mode,
indicated by its prompt (telnet> ) In this mode, it accepts and executes the
1604-10-733-068
1604-10-733-068
TFTP
NAME
tftp - IPv4 Trivial File Transfer Protocol client
SYNOPSIS
tftp [ options... ] [host [port]] [-c command]
DESCRIPTION
Tftp is the user interface to the Internet TFTP (Trivial File Transfer Protocol),
which allows users to transfer files to and from a remote machine. The remote host
may be specified on the command line, in which case tftp uses host as the default
host for future transfers (see the connect command below).
1604-10-733-068
COMMANDS
Once tftp is running, it issues the prompt and recognizes the following commands:
? command-name ...
Print help information.
ascii
Shorthand for "mode ascii"
binary
Shorthand for "mode binary"
connect host-name [port ]
Set the host (and optionally port for transfers. Note that the TFTP protocol,
unlike the FTP protocol, does not maintain connections between transfers;
thus, the connect command does not actually create a connection, but merely
remembers what host is to be used for transfers. You do not have to use the
connect command; the remote host can be specified as part of the get or put
commands.
get filename
get remotename localname
get file1 file2 ... fileN
Get a file or set of files from the specified sources Source can be in one of
two forms: a filename on the remote host, if the host has already been
specified, or a string of the form hosts:filename to specify both a host and
filename at the same time. If the latter form is used, the last hostname
specified becomes the default for future transfers.
mode transfer-mode
Set the mode for transfers; transfer-mode may be one of ascii or binary The
default is ascii
put file
put localfile remotefile
put file1 file2 ... fileN remote-directory
Put a file or set of files to the specified remote file or directory. The
destination can be in one of two forms: a filename on the remote host, if the
1604-10-733-068
FTP
NAME
ftp - Internet file transfer program
SYNOPSIS
ftp [-pinegvd ] [host ]
pftp [-inegvd ] [host ]
DESCRIPTION
Ftp is the user interface to the Internet standard File Transfer Protocol. The
program allows a user to transfer files to and from a remote network site.
Options may be specified at the command line, or to the command interpreter.
-p
Use passive mode for data transfers. Allows use of ftp in environments
where a firewall prevents connections from the outside world back to the
client machine.
-i
Turns off interactive prompting during multiple file transfers.
1604-10-733-068
-n
Restrains ftp from attempting auto-login upon initial connection.
-e
Disables command editing and history support, if it was compiled into the
ftp executable. Otherwise, does nothing.
-g
Disables file name globbing.
-v
Verbose option forces ftp to show all responses from the remote server, as
well as report on data transfer statistics.
-d
Enables debugging.
$ macro-name [args ]
Execute the macro macro-name that was defined with the macdef command.
Arguments are passed to the macro unglobbed.
account [passwd ]
Supply a supplemental password required by a remote system for access to
resources once a login has been successfully completed
ascii
Set the file transfer type to network ASCII This is the default type.
bell
Arrange that a bell be sounded after each file transfer command is
completed.
binary
Set the file transfer type to support binary image transfer.
bye
Terminate the FTP session with the remote server and exit ftp An end of file
will also terminate the session and exit.
case
Toggle remote computer file name case mapping during mget commands.
cd remote-directory
Change the working directory on the remote machine to remote-directory
close
Terminate the FTP session with the remote server, and return to the
command interpreter. Any defined macros are erased.
cr
Toggle carriage return stripping during ascii type file retrieval.
delete remote-file
Delete the file remote-file on the remote machine.
1604-10-733-068
debug [debug-value ]
Toggle debugging mode. If an optional debug-value is specified it is used to
set the debugging level.
disconnect
A synonym for close
form format
Set the file transfer form to format The default format is file.
hash
Toggle hash-sign (``#'') printing for each data block transferred. The size of a
data block is 1024 bytes.
help [command ]
Print an informative message about the meaning of command If no argument
is given, ftp prints a list of the known commands.
idle [seconds ]
Set the inactivity timer on the remote server to seconds seconds. If seconds
is ommitted, the current inactivity timer is printed.
PROGRAM:
a) ECHO SERVICE
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
main()
{
int sockfd,len,c;
char buff1[20],buff2[20];
struct sockaddr_in se;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
printf("socket not created\n");
exit(0);
}
else
{
printf("socket created\n");
se.sin_family=AF_INET;
1604-10-733-068
se.sin_port=htons(7);
se.sin_addr.s_addr=inet_addr("10.2.0.5");
c=connect(sockfd,(struct sockaddr*)&se,sizeof(se));
if(c==-1)
printf("connection not established\n");
else
{
printf("connection established\n");
printf("enter string\n");
scanf("%s",&buff1);
send(sockfd,buff1,20,0);
printf("echoed msg from the server is \n");
recv(sockfd,buff2,20,0);
printf("%s\n",buff2);
}
}
close(sockfd);
}
OUTPUT:
b) TIME
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
main()
{
int sockfd,len,c;
1604-10-733-068
#include<sys/socket.h>
#include<netinet/in.h>
#include<unistd.h>
int main()
{
int sockfd,len,c;
char buff1[20],buff2[20];
struct sockaddr_in se;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
printf("Socket not created \n");
exit(0);
}
else
{
printf("Socket created\n");
se.sin_family=AF_INET;
se.sin_port=htons(13);
se.sin_addr.s_addr=inet_addr("10.2.0.5");
c=connect(sockfd,(struct sockaddr*)&se,sizeof(se));
if(c==-1)
printf("Connection not established\n");
else
{
printf("connection established\n");
printf("Date And Time Is \n");
recv(sockfd,buff2,20,0);
printf("%s \n",buff2);
}
}
close(sockfd);
}
OUTPUT:
1604-10-733-068
PROGRAM:
Server program:
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<unistd.h>
int main()
{
int sockfd,l,b,x,a;
char msg[20];
struct sockaddr_in se,cli;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
printf("Socket not created \n");
exit(0);
}
1604-10-733-068
else
{
printf("Socket created\n");
se.sin_family=AF_INET;
se.sin_port=htons(8068);
se.sin_addr.s_addr=inet_addr("10.2.0.5");
}
b=bind(sockfd,(struct sockaddr*) &se,sizeof(se));
if(b==-1)
{
printf("Not binded \n");
exit(0);
}
else
{
printf("Binded \n");
}
l=listen(sockfd,5);
if(l==-1)
{
printf("Not listening \n");
}
else
{
printf("Listening\n");
for(;;)
{
x=sizeof(cli);
a=accept(sockfd,(struct sockaddr*)&cli,&x);
if(a==-1)
{
printf("Not accepting \n");
}
else
{
printf("Accepting \n");
}
recv(a,msg,10,0);
send(a,msg,10,0);
}
1604-10-733-068
}
close(a);
close(sockfd);
}
Client program:
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<unistd.h>
int main()
{
int sockfd,x,c;
char msg[10]="RoseSophie",msg1[20];
struct sockaddr_in se,cli;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
printf("Socket not created \n");
exit(0);
}
else
{
printf("Socket created\n");
se.sin_family=AF_INET;
se.sin_port=htons(8068);
se.sin_addr.s_addr=inet_addr("10.2.0.5");
c=connect(sockfd,(struct sockaddr*)&se,sizeof(se));
if(c==-1)
printf("Connection not established\n");
else
{
printf("connection established\n");
send(sockfd,msg,10,0);
recv(sockfd,msg1,10,0);
printf("received message %s \n",msg1);
1604-10-733-068
}
}
close(sockfd);
}
OUTPUT:
PROGRAM:
Server program
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<unistd.h>
#include<time.h>
main()
{
int sockfd,b,l,newsockfd,x;
char msg[20];
time_t pt;
struct sockaddr_in se,cli;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
printf("socket not created\n");
exit(0);
}
1604-10-733-068
else
{
printf("socket created\n");
se.sin_family=AF_INET;
se.sin_port=htons(8068);
se.sin_addr.s_addr=inet_addr("10.2.0.5");
b=bind(sockfd,(struct sockaddr*)&se,sizeof(se));
if(b==-1)
printf("server not binded\n");
else
{
printf("server binded\n");
l=listen(sockfd,5);
if(l==-1)
printf("server not listening\n");
else
{
printf("server listening\n");
for(;;)
{
x=sizeof(cli);
newsockfd=accept(sockfd,(struct sockaddr*)&cli,&x);
if(newsockfd==-1)
printf("server has rejected\n");
else
printf("server has accepted\n");
pt=time(NULL);
strcpy(msg,ctime(&pt));
send(newsockfd,msg,sizeof(msg),0);
}
}
}
}
close(sockfd);
}
Client program
1604-10-733-068
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<unistd.h>
main()
{
int c,sockfd,b,l,newsockfd,x;
char msg[20]="Hello",msg1[20];
struct sockaddr_in se,cli;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
printf("socket not created\n");
exit(0);
}
else
{
printf("socket created\n");
se.sin_family=AF_INET;
se.sin_port=htons(8068);
se.sin_addr.s_addr=inet_addr("10.2.0.5");
c=connect(sockfd,(struct sockaddr*)&se,sizeof(se));
if(c==-1)
printf("connection not established\n");
else
{
printf("connection established\n");
send(sockfd,msg,20,0);
recv(sockfd,msg1,20,20);
printf("%s\n",msg1);
}
}
close(sockfd);
}
OUTPUT:
1604-10-733-068
PROGRAM:
Server program
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<unistd.h>
main()
{
int sockfd,b,chlen;
char msg[20];
struct sockaddr_in se,cli;
sockfd=socket(AF_INET,SOCK_DGRAM,0);
if(sockfd==-1)
{
printf("Socket not created \n");
exit(0);
}
1604-10-733-068
else
{
printf("Socket created\n");
se.sin_family=AF_INET;
se.sin_port=htons(8068);
se.sin_addr.s_addr=inet_addr("10.2.0.5");
}
b=bind(sockfd,(struct sockaddr*) &se,sizeof(se));
if(b==-1)
{
printf("Not binded \n");
exit(0);
}
else
{
printf("Binded \n");
}
while(1)
{
chlen=sizeof(cli);
recvfrom(sockfd,msg,sizeof(msg),0,(struct sockaddr*)&cli,&chlen);
sendto(sockfd,msg,sizeof(msg),0,(struct sockaddr*)&cli,sizeof(cli));
}
close(sockfd);
}
Client program
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<unistd.h>
int main()
{
int sockfd,x,c;
char msg[20]="SofiaNishath",msg1[20];
1604-10-733-068
1604-10-733-068
PROGRAM:
Server program
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<string.h>
#include<netinet/in.h>
#include<unistd.h>
#include<time.h>
main()
{
int sockfd,b,chlen;
time_t st;
char msg[100],msg1[10];
struct sockaddr_in se,cli;
sockfd=socket(AF_INET,SOCK_DGRAM,0);
if(sockfd==-1)
{
1604-10-733-068
main()
{
int sockfd,c;
char msg1[100],msg[10]="sofia";
struct sockaddr_in se,cli;
sockfd=socket(AF_INET,SOCK_DGRAM,0);
if(sockfd==-1)
{
printf("Socket not created \n");
exit(0);
}
else
{
printf("Socket created\n");
se.sin_family=AF_INET;
se.sin_port=htons(8068);
se.sin_addr.s_addr=inet_addr("10.2.0.5");
c=connect(sockfd,(struct sockaddr*)&se,sizeof(se));
if(c==-1)
printf("Connection not established\n");
else
{
printf("connection established\n");
sendto(sockfd,msg,sizeof(msg),0,(struct sockaddr*)&se,sizeof(se));
int servlen=sizeof(se);
recvfrom(sockfd,msg1,sizeof(msg1),0,(struct sockaddr*)&se,&servlen);
printf("Current Time %s \n",msg1);
}
}
close(sockfd);
}
OUTPUT:
1604-10-733-068
PROGRAM:
Server program
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<unistd.h>
int main()
{
int i,sockfd,l,b,sockfd2,a,z=0,chlen;
char msg[20];
struct sockaddr_in se,cli;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
1604-10-733-068
{
printf("Socket not created \n");
exit(0);
}
else
{
printf("Socket created\n");
se.sin_family=AF_INET;
se.sin_port=htons(8068);
se.sin_addr.s_addr=inet_addr("10.2.0.5");
}
b=bind(sockfd,(struct sockaddr*) &se,sizeof(se));
if(b==-1)
{
printf("Not binded \n");
exit(0);
}
else
{
printf("Binded \n");
}
l=listen(sockfd,5);
if(l==-1)
{
printf("Not listening \n");
}
else
{
printf("Listening\n");
}
while(z<=0)
{
chlen=sizeof(cli);
sockfd2=accept(sockfd,(struct sockaddr*)&cli,&chlen);
if(sockfd2==-1)
{
printf("Not accepting \n");
}
else
{
1604-10-733-068
printf("Accepting \n");
}
i=fork();
if(i==0)
{
recv(sockfd2,msg,sizeof(msg),0);
send(sockfd2,msg,sizeof(msg),0);
}
z++;
close(a);
close(sockfd);
}
}
Client program
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<unistd.h>
main()
{
int sockfd,x,c;
char msg[20]="SOFIA",msg1[20];
struct sockaddr_in se,cli;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
printf("Socket not created \n");
exit(0);
}
else
{
printf("Socket created\n");
se.sin_family=AF_INET;
se.sin_port=htons(8068);
se.sin_addr.s_addr=inet_addr("10.2.0.5");
c=connect(sockfd,(struct sockaddr*)&se,sizeof(se));
if(c==-1)
1604-10-733-068
PROGRAM:
Server program
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<unistd.h>
#include<time.h>
int main()
{
time_t st;
int i,sockfd,l,b,sockfd2,a,z=0,chlen;
char msg[20];
struct sockaddr_in se,cli;
1604-10-733-068
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
printf("Socket not created \n");
exit(0);
}
else
{
printf("Socket created\n");
se.sin_family=AF_INET;
se.sin_port=htons(8068);
se.sin_addr.s_addr=inet_addr("10.2.0.5");
}
b=bind(sockfd,(struct sockaddr*) &se,sizeof(se));
if(b==-1)
{
printf("Not binded \n");
exit(0);
}
else
{
printf("Binded \n");
}
l=listen(sockfd,5);
if(l==-1)
{
printf("Not listening \n");
}
else
{
printf("Listening\n");
}
while(z<=0)
{
chlen=sizeof(cli);
sockfd2=accept(sockfd,(struct sockaddr*)&cli,&chlen);
if(sockfd2==-1)
{
printf("Not accepting \n");
}
1604-10-733-068
else
{
printf("Accepting \n");
}
i=fork();
if(i==0)
{
st=time(NULL);
strcpy(msg,ctime(&st));
send(sockfd2,msg,sizeof(msg),0);
}
z++;
close(a);
close(sockfd);
}
}
Client program
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<unistd.h>
main()
{
int sockfd,x,c;
char msg[20]="AbrarMehdi",msg1[20];
struct sockaddr_in se,cli;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
printf("Socket not created \n");
exit(0);
}
else
{
printf("Socket created\n");
se.sin_family=AF_INET;
se.sin_port=htons(8068);
1604-10-733-068
se.sin_addr.s_addr=inet_addr("10.2.0.5");
c=connect(sockfd,(struct sockaddr*)&se,sizeof(se));
if(c==-1)
printf("Connection not established\n");
else
{
printf("connection established\n");
recv(sockfd,msg1,sizeof(msg1),0);
printf("Time is %s \n",msg1);
}
}
close(sockfd);
}
OUTPUT:
PROGRAM:
Server program
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<unistd.h>
int main()
{
int sockfd,t,l,b,z,c,x,a;
struct sockaddr_in se,cli;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
1604-10-733-068
{
printf("Socket not created \n");
exit(0);
}
else
{
printf("Socket created\n");
se.sin_family=AF_INET;
se.sin_port=htons(8068);
se.sin_addr.s_addr=inet_addr("10.2.0.5");
}
b=bind(sockfd,(struct sockaddr*) &se,sizeof(se));
if(b==-1)
{
printf("Not binded \n");
exit(0);
}
else
{
printf("Binded \n");
}
l=listen(sockfd,5);
if(l==-1)
{
printf("Not listening \n");
}
else
{
printf("Listening\n");
for(;;)
{
x=sizeof(cli);
a=accept(sockfd,(struct sockaddr*)&cli,&x);
if(a==-1)
{
printf("Not accepting \n");
}
else
{
printf("Accepting \n");
1604-10-733-068
}
recv(a,(int*)&z,1,0);
recv(a,(int*)&c,1,0);
t=z+c;
send(a,(int*)&t,1,0);
}
}
close(a);
close(sockfd);
}
Client progam
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<unistd.h>
int main()
{
int sockfd,a=10,b=20,c;
struct sockaddr_in se,cli;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
printf("Socket not created \n");
exit(0);
}
else
{
printf("Socket created\n");
se.sin_family=AF_INET;
se.sin_port=htons(8068);
se.sin_addr.s_addr=inet_addr("10.2.0.5");
c=connect(sockfd,(struct sockaddr*)&se,sizeof(se));
if(c==-1)
printf("Connection not established\n");
else
1604-10-733-068
{
printf("connection established\n");
send(sockfd,(int*)&a,1,0);
send(sockfd,(int*)&b,1,0);
recv(sockfd,(int*)&c,1,0);
printf("received message %d \n",c);
}
}
close(sockfd);
}
OUTPUT:
PROGRAM:
Echo.x
program ECHOPRG{
version ECHOER{
string echo(string)=1;
}=1;
}=0x20000001;
Echoo_client.c
/*
* This is sample code generated by rpcgen.
* These are only templates and you can use them
* as a guideline for developing your own functions.
*/
1604-10-733-068
#include "echo.h"
void
echoprg_1(char *host,char *str)//argument for ECHOPRG_1
{
CLIENT *clnt;
char * *result_1;
char * echo_1_arg;
#ifndef
DEBUG
clnt = clnt_create (host, ECHOPRG, ECHOER, "udp");//used for creating
client.can use udp or tcp
if (clnt == NULL) {
clnt_pcreateerror (host);
exit (1);
}
#endif/* DEBUG */
echo_1_arg=str;
result_1 = echo_1(&echo_1_arg, clnt);//for calling client stub
if (result_1 == (char **) NULL) {
clnt_perror (clnt, "call failed");
// printf("%s",*result_1);
}
else
printf("%s",*(result_1));
#ifndef
DEBUG
clnt_destroy (clnt);
#endif /* DEBUG */
}
int
main (int argc, char *argv[])
{
char *host;
if (argc < 2) {
printf ("usage: %s server_host\n", argv[0]);
exit (1);
1604-10-733-068
}
host = argv[1];
echoprg_1 (host,argv[2]);
exit (0);
}
Echo_server.c
/*
* This is sample code generated by rpcgen.
* These are only templates and you can use them
* as a guideline for developing your own functions.
*/
#include "echo.h"
char **
echo_1_svc(char **argp, struct svc_req *rqstp)
{
static char * result;
/*
* insert server code here
*/
result=*argp;
return &result;
}
OUTPUT:
1604-10-733-068
PROGRAM:
day.x
program DAYPRG{
version DAYVER{
string day(void)=1;
1604-10-733-068
}=1;
}=0x20000001;
day_server.c
/*
* This is sample code generated by rpcgen.
* These are only templates and you can use them
* as a guideline for developing your own functions.
*/
#include "day.h"
#include "time.h"
char **
day_1_svc(void *argp, struct svc_req *rqstp)
{
static char * result;
/*
* insert server code here
*/
time_t t;
time(&t);
result=ctime(&t); //&t returns time and ctime gives the correct format of time
return &result;
}
day_client.c
/*
* This is sample code generated by rpcgen.
* These are only templates and you can use them
* as a guideline for developing your own functions.
*/
#include "day.h"
void
dayprg_1(char *host)
1604-10-733-068
{
CLIENT *clnt;
char * *result_1;
char *day_1_arg;
#ifndef
DEBUG
clnt = clnt_create (host, DAYPRG, DAYVER, "udp");
if (clnt == NULL) {
clnt_pcreateerror (host);
exit (1);
}
#endif/* DEBUG */
result_1 = day_1((void*)&day_1_arg, clnt);
if (result_1 == (char **) NULL) {
clnt_perror (clnt, "call failed");
}
printf("%s",*result_1);
#ifndef
DEBUG
clnt_destroy (clnt);
#endif /* DEBUG */
}
int
main (int argc, char *argv[])
{
char *host;
if (argc < 2) {
printf ("usage: %s server_host\n", argv[0]);
exit (1);
}
host = argv[1];
dayprg_1 (host);
exit (0);
}
OUTPUT:
1604-10-733-068
1604-10-733-068