CN Manual
CN Manual
Implementt
hedatalinklayerfr
amingmethodssuchas
charact
erst
uff
ingandbitst
uffi
ng.
Cprogram t
oimplementcharact
erstuf
fi
ng.
Pr
ogr
am:
#i
ncl
ude<st
dio.
h>
#i
ncl
ude<coni
o.h>
#i
ncl
ude<st
ri
ng.
h>
v
oidmai
n()
i
nti
=0,
j
=0,
n,
pos;
chara[
20]
,
b[50]
,
ch;
pr
int
f("
\nent
erst
ri
ng:
")
;
scanf
("%s"
,&a)
;
n=st
rl
en(
a);
b[
0]='
D';
b[
1]='
L'
;
b[
2]='
E'
;
b[
3]='
S'
;
b[
4]='
T'
;
b[
5]='
X'
;
j
=6;
whi
l
e(i
<n)
;
i
f(
a[i
]=='
D'&&a[
i+1]
=='
L'
&&a[
i+2]
=='
E'
)
{
b[
j]
='
D';
b[
j+1]
='
L'
;
b[
j+2]
='
E'
;
j
=j+3;
b[
j]
=a[
i]
;
i
++;
j
++;
el
se
b[
j]
=a[
i]
;
i
++;
j
++;
b[
j]
='
D';
b[
j+1]
='
L'
;
b[
j+2]
='
E'
;
b[
j+3]
='
E'
;
b[
j+4]
='
T'
;
b[
j+5]
='
X'
;
b[
j+6]
='
\0'
;
pr
int
f("
\nf
rameaf
terst
uff
ing:
")
;
pr
int
f("
%s"
,b)
;
}
OUTPUT:
Cpr
ogr
am f
orbi
tst
uff
ing
Pr
ogr
am:
#i
ncl
ude<st
dio.
h>
#i
ncl
ude<coni
o.h>
#i
ncl
ude<st
ri
ng.
h>
v
oidmai
n()
i
nta[
20]
,
b[30]
,
i,
j,
k,
count
,n;
pr
int
f("
\nent
erf
ramesi
ze:
")
;
scanf
("%d"
,&n)
;
pr
int
f("
\nent
erf
ramei
nthef
orm of0and1:
")
;
f
or(
i=0;
i
<n;
i
++)
scanf
("%d"
,&a[
i]
);
i
=0;
count
=1;
j
=0;
whi
l
e(i
<n)
{
i
f(
a[i
]==1)
b[
j]
=a[
i]
;
f
or(
k=i
+1;
a[k]
==1&k<n&&count
<5;
k++)
j
++;
b[
j]
=a[
k];
count
++;
i
f(
count
==5)
j
++;
b[
j]
=0;
i
=k;
el
se
b[
j]
=a[
i]
;
i
++;
j
++;
pr
int
f("
\naf
terbi
tst
uff
ing:
")
;
pr
int
f("
01111110 "
);
f
or(
i=0;
i
<j;
i
++)
pr
int
f("
%d"
,b[
i]
);
pr
int
f(" 01111110"
);
get
ch(
);
OUTPUT:
2.
Implementonadatasetofchar
act
erst
hethreeCRC
pol
ynomial
s— CRC12,CRC16and CRCCCIP.
Pr
ogr
am:
#i
ncl
ude<st
dio.
h>
#i
ncl
ude<coni
o.h>
#i
ncl
ude<st
ri
ng.
h>
v
oidmai
n(){
i
nti
,
j,
key
len,
msgl
en;
chari
nput
[100]
,key
[30]
,
temp[
30]
,
quot
[100]
,
rem[
30]
,
key
1[30]
;
cl
rscr
();
pr
int
f("
Ent
erDat
a:"
);
get
s(i
nput
);
pr
int
f("
Ent
erKey
:")
;
get
s(key
);
key
len=st
rl
en(
key
);
msgl
en=st
rl
en(
input
);
st
rcpy
(key
1,key
);
f
or(
i=0;
i
<key
len-
1;i
++){
i
nput
[msgl
en+i
]='
0'
;
f
or(
i=0;
i
<key
len;
i
++)
t
emp[
i]
=input
[i
];
f
or(
i=0;
i
<msgl
en;
i
++){
quot
[i
]=t
emp[
0];
i
f(
quot
[i
]=='
0'
)
f
or(
j=0;
j
<key
len;
j
++)
key
[j
]='
0'
;el
se
f
or(
j=0;
j
<key
len;
j
++)
key
[j
]=key
1[j
];
f
or(
j=key
len-
1;j
>0;
j
--){
i
f(
temp[
j]
==key
[j
])
r
em[
j-
1]='
0'
;el
se
r
em[
j-
1]='
1'
;
r
em[
key
len-
1]=i
nput
[i
+key
len]
;
st
rcpy
(temp,
rem)
;
st
rcpy
(rem,
temp)
;
pr
int
f("
\nQuot
ienti
s")
;
f
or(
i=0;
i
<msgl
en;
i
++)
pr
int
f("
%c"
,quot
[i
])
;
pr
int
f("
\nRemai
nderi
s")
;
f
or(
i=0;
i
<key
len-
1;i
++)
pr
int
f("
%c"
,r
em[
i]
);
pr
int
f("
\nFi
nal
dat
ais:
");
f
or(
i=0;
i
<msgl
en;
i
++)
pr
int
f("
%c"
,i
nput
[i
])
;
f
or(
i=0;
i
<key
len-
1;i
++)
pr
int
f("
%c"
,r
em[
i]
);
get
ch(
);
Out
put
:
3.
Impl
ementDi
jkstr
asal
gor
it
hm t
ocomput
etheShor
test
pat
hthr
oughagraph.
progr
am:
#i
nclude<stdi
o.h>
#i
nclude<coni
o.h>
#defi
neINFINITY9999
#defi
neMAX10
v
oiddi
j
kst
ra(
intG[
MAX]
[MAX]
,
intn,
i
ntst
art
node)
;
i
ntmai
n()
{
i
ntG[MAX] [MAX],i
,
j,
n,u;
pri
ntf
("Enterno.ofverti
ces:"
);
scanf
("%d" ,
&n);
pri
ntf
("\nEntert
headj acencymat
ri
x:
\n"
);
f
or(
i=0;i
<n;i
++)
for
(j=0;
j<n;
j++)
scanf
("%d"
,&G[
i]
[j
])
;
pri
ntf
("\
nEntert
hest
art
ingnode:
")
;
scanf
("%d"
,&u);
dij
kst
ra(G,
n,
u);
r
etur
n0;
}
v
oiddi
j
kst
ra(
intG[
MAX]
[MAX]
,
intn,
i
ntst
art
node)
{
i
ntcost
[MAX]
[MAX],
dist
ance[
MAX] ,
pred[MAX];
i
ntvi
sit
ed[
MAX],
count
,mindi
stance,
nextnode,
i
,j
;
/
/pred[]storesthepr
edecessorofeachnode
/
/countgi vesthenumberofnodesseensof ar
/
/createt hecostmatr
ix
f
or(
i=0;i<n;i
++)
for(j
=0;j<n;
j++)
i
f(G[
i]
[j
]==0)
cost[
i]
[j
]=I
NFINITY;
el
se
cost[
i]
[j
]=G[i
][
j]
;
/
/ini
ti
ali
zepr ed[],
distance[
]andvi
sit
ed[
]
f
or(i
=0;i
<n;i++)
{
dist
ance[ i
]=cost[start
node][
i]
;
pred[i
]=startnode;
visi
ted[i
]=0;
}
di
stance[
startnode]=0;
vi
sit
ed[st
artnode]=1;
count=1;
whi
l
e(count<n-
1)
{
mi
ndi
stance=I
NFINI
TY;
/
/next
nodegi
vest
henodeatmi
nimum di
stance
f
or(
i=0;
i
<n;
i
++)
i
f(
distance[i]
<mindi
stance&&!v
isi
ted[
i]
)
{
mindistance=di
stance[
i]
;
nextnode=i;
}
/
/checki
fabet
terpat
hexi
stst
hroughnext
node
v
isi
ted[
nextnode]=1;
f
or(
i=0;
i<n;
i++)
if(
!vi
sit
ed[i
])
i
f(mi
ndist
ance+cost
[next
node]
[i
]<di
stance[
i]
)
{
di
stance[
i]
=mi
ndi
stance+cost
[next
node]
[i
];
pr
ed[
i]
=next
node;
}
count
++;
}
/
/pri
ntthepathanddi
stanceofeachnode
f
or(
i=0;
i
<n;i++)
if
(i
!=st
artnode)
{
pri
ntf
("\
nDist
anceofnode%d=%d"
,i
,
dist
ance[
i]
);
pri
ntf
("\
nPath=%d"
,i
);
j
=i;
do
{
j
=pred[j]
;
pri
ntf
("<-%d",
j)
;
}whi
le(
j!
=startnode);
}
}
out
put
:
4.Takeanexamplesubnetgraphwithweightsindi
cat
ing
del
aybetweennodes.Now obtai
nRoutingtablearteach
nodeusi
ngdist
ancevect
orr
outingal
gori
thm.
Pr
ogr
am:
#i
ncl
ude<coni
o.h>
#i
ncl
ude<st
dio.
h>
st
ructnode{
i
ntdi
st[
20]
;
i
ntf
rom[
20]
;
}r
out
e[10]
;
i
ntmai
n()
i
ntdm[
20]
[20]
,no,
i
,j
,k,
fl
ag;
cl
rscr
();
pr
int
f("
\nEnt
ernoofnodes:
")
;
scanf
("%d"
,&no)
;
pr
int
f("
\nEnt
ert
hedi
stancemat
ri
x:
")
;
f
or(
i=0;
i<no;
i++){
f
or(
j=0;
j<no;
j++){
scanf
("%d"
,&dm[
i]
[j
])
;
dm[
i]
[i
]=0;
r
out
e[i
].
dist
[j
]=dm[
i]
[j
];
r
out
e[i
].
fr
om[
j]=j
;
do{
f
lag=0;
f
or(i
=0;
i<no;
i++){
f
or(
j=0;
j<no;
j++){
f
or(k=0;
k<no;
k++){
i
f((
rout
e[i
].
dist
[j
])>(
rout
e[i
].
dist
[k]+r
out
e[k]
.di
st[
j]
)){
r
out
e[i
].
dist
[j
]=r
out
e[i
].
dist
[k]+r
out
e[k]
.di
st[
j]
;
r
out
e[i
].
fr
om[
j]=k;
f
lag=1;
}
}whi
l
e(f
lag)
;
f
or(
i=0;
i<no;
i++){
pr
int
f("
\nRout
ingt
abl
eofr
out
er%d:
",i
+1)
;
pr
int
f("
\nTo\
tNext
\tCost
")
;
f
or(
j=0;
j<no;
j++)
i
f(
i!
=j)
pr
int
f("
\n%d\
t%d\
t\t
%d\
n",
j
+1,
rout
e[i
].
fr
om[
j]
+1,
rout
e[i
].
dist
[j
])
;
r
etur
n0;
OUTPUT:
5.Takeanexampl
esubnetofhost
s.Obt
ainbr
oadcastt
ree
forit
.
Pr
ogr
am:
#include<st dio.h>
#include<coni o.
h>
voidadj (i
nt);
i
nta[ 10][10],
n;
voidmai n(
)
{
i
nti ,j,
root;
clr
scr ();
print f("
enternoofnodes: "
);
scanf ("
%d" ,&n);
print f("
\nent eradjacencymatr
ix:
")
;
for(i=1;i<=n;i++)
for (j=1;j
<=n; j
++)
scanf ("
%d" ,
&a[i
][j
])
;
print f("
\nent erroot:
");
scanf ("
%d" ,&root);
adj( root);
get ch( );
}
v
oi dadj (
intk)
{
i
nti ,
j;
printf
("\nBr oadcasttree:"
);
printf
("\n\t%d\ n"
,k)
;
for(j
=1;j<=n;j++)
{
if((
a[k][j
]==1)||
(a[
j]
[k]==1))
pri
ntf("%d\ t"
,j
);
}
printf
("\n");
for(i
=1; i
<=n;i++)
if((
a[k][i
]==0)&&(a[i
][k]
==0)&&(
i!
=k)
)
pri
ntf("%d\ t"
,i
);
}
Out
put
:
6.
Progr
amst
oimpl
ementer
rorcor
rect
ionanddet
ect
ion.
Program:
#incl
ude<st di
o.h>
#incl
ude<mat h.h>
#incl
ude<conio.h>
i
ntinput[32]
;
i
ntdat a[
32],
datarec[
32]
;
i
ntham_ calc(i
nt,
int)
;
voidmain()
{
i
ntn, i
,p_n=0, c_l
,
j,k,
c,er
ror_pos;
clr
scr();
pri
ntf("Enterthelengthoft heDatabi
t:"
);
scanf("%d" ,
&n);
pri
ntf("EntertheDat abit:
\n")
;
for(
i=0;i<n;
i++)
{
scanf("%d" ,
&input
[i
]);
}
i
=0;
whil
e(n>(
int
)pow(
2,i
)-
(i
+1)
)
{
p_n++;
i
++;
}
c_l=p_n+n;
j
=k=0;
f
or(i
=0;
i
<c_
l;
i++)
{
i
f(i==( (int)
pow( 2,k)-1)
)
{
dat a[i]
=0;
k++;
}
else
{
dat a[i]
=input[j];
j++;
}
}
for (i=0;i
<p_ n;i++)
{
i
ntposi ti
on=( int)pow(2,i
);
i
ntv alue=ham_ calc(posi
tion,c_l
);
dat a[posi t
ion-1] =value;
}
pr intf("\
nNoofpar i
tybi
tst obeadded:%d",
p_n)
;
pr intf("\
nTot al noofbi t
s:%d" ,
c_l
);
pr intf("\
nHammi ngcodef ordatabiti
s:"
);
for (i=0;i
<c_ l
;i++)
printf( "
%d" ,data[i]
);
pr intf("\
n" )
;
printf("Entert her ecei veddat abit:
\n");
for(i
=0; i<c_ l
;i++)
scanf (
"%d" ,
&dat ar ec[ i
]);
err
or _pos=0;
for(i
=0; i<p_ n;i++)
{
i
ntposi tion=( int)pow( 2, i
);
i
ntv alue=ham_ cal c(posi t
ion,c_l
);
i
f(value! =0)
error_pos+=posi tion;
}
if(
error _pos==1)
pri
ntf (
"Ther ecei v eddat aWor di scorrect.
\n"
);
else
pri
ntf (
"Error
atbi tposi tion:%d\ n",
err
or _pos)
;
pri
ntf (
"\nDat asent: ");
for(i
=0;i<c_ l
;i++)
printf("%d" ,
dat a[i]);
pri
ntf (
"\nDat ar ecei ved: "
);
for(i
=0;i<c_ l
;i++)
printf("%d" ,
dat ar ec[i]
);
pri
ntf (
"\nCor r ectmessagei s\
n");
for(i=0;i
<c_ l;i
++)
{
printf("%d" ,
dat a[i]);
}
}
i
ntham_ calc( intposi ti
on,intc_ l
)
{
intcount =0, i
,j;
i=posi ti
on- 1;
whi l
e(i<c_ l)
{
for(j=i;j
<i+posi tion;j++)
{
if(dat a[ j
]==dat arec[j]
)
count ++;
}
i=i+2* posi t
ion;
}
if(
count %2==0)
retur n0;
else
retur n1;
}
Out
put
:
7.
Progr
amsf
orI
Paddr
essconv
ersi
onf
unct
ion
pr
ogr
am:
#i
ncl
ude<st
dio.
h>
#i
ncl
ude<sy
s/socket
.h>
#i
ncl
ude<st
dli
b.h>
#i
ncl
ude<ar
pa/
inet
.h>
#def
ineSERV_
PORT9002
i
ntmai
n()
charst
r[
INET_
ADDRSTRLEN]
,
*st
r1,
*st
r2;
st
ructsockaddr
_inser
ver
;
pr
int
f("
Test
ingi
net
_pt
onandi
neti
net
_nt
op\
n")
;
i
net
_pt
on(
AF_
INET,
"192.
0.2.
33"
,&(
ser
ver
.si
n_addr
));
i
net
_nt
op(
AF_
INET,
&(ser
ver
.si
n_addr
),st
r,I
NET_
ADDRSTRLEN)
;
pr
int
f("
%s\
n",
str
);/
/pr
int
s"192.
0.2.
33"
bzer
o(&st
r1,
si
zeof
(st
r1)
);
bzer
o(&ser
ver
,si
zeof
(ser
ver
));
pr
int
f("
Test
ingi
net
_nt
oaandi
net
_at
on\
n")
;
i
net
_at
on(
"192.
168.
1.1"
,&(
ser
ver
.si
n_addr
));
st
r1=i
net
_nt
oa(
ser
ver
.si
n_addr
);
pr
int
f("
%s\
n",
str
1);
bzer
o(&st
r1,
si
zeof
(st
r1)
);
bzer
o(&ser
ver
,si
zeof
(ser
ver
));
pr
int
f("
Test
ingi
net
_addr
\n"
);
ser
ver
.si
n_addr
.s_
addr
=inet
_addr
("192.
2.2.
2")
;
st
r2=i
net
_nt
oa(
ser
ver
.si
n_addr
);
pr
int
f("
%s\
n",
str
2);
out
put
:
-
sh-
4.1$v
iipco.
c
-
sh-
4.1$cc-
oipcoi
pco.
c
-
sh-
4.1$.
/i
pco
Test
ingi
net
_pt
onandi
neti
net
_nt
op
192.
0.2.
33
Test
ingi
net
_nt
oaandi
net
_at
on
192.
168.
1.1
Test
ingi
net
_addr
192.
2.2.
2
8.Cli
entserv
erappl
icat
ionsusingi
nterprocess
communi cati
onandsynchronousmechanisms:(a)
FIFO
(b)Messagequeues (c)Sharedmemor y
(
a)Fi
fo
ser
ver
:
#i
ncl
ude<st
dio.
h>
#i
ncl
ude<ct
ype.
h>
#i
ncl
ude<sy
s/t
ypes.
h>
#i
ncl
ude<sy
s/st
at.
h>
#i
ncl
ude<f
cnt
l.
h>
#i
ncl
ude<st
dli
b.h>
#i
ncl
ude<st
ri
ng.
h>
mai
n()
i
ntwr
fd,
rdf
d,n,
d,
ret
_val
,
count
;
charbuf
[50]
;/*
creat
ethef
ir
stnamedpi
pe*
/
r
et_
val
=mkf
if
o("
np1"
,0666)
;/*
creat
ethesecondnamedpi
pe*
/
r
et_
val
=mkf
if
o("
np2"
,0666)
;/*
opent
hef
ir
stnamedpi
pef
orr
eadi
ng*
/
r
dfd=open(
"np1"
,O_
RDONLY)
;/*
opent
hesecondnamedpi
pef
or
wr
it
ing*
/
wr
fd=open(
"np2"
,O_
WRONLY)
;/*
readf
rom t
hef
ir
stpi
pe*
/
n=r
ead(
rdf
d,buf
,50)
;buf
[n]
='
\0'
;//
endofl
i
ne
pr
int
f("
ful
ldupl
exser
ver
:r
eadf
rom t
hepi
pe:
%s\
n",
buf
);/
*conv
ertt
hest
ri
ngt
oupper
cl
ass*
/
count
=0;
whi
l
e(count
<n)
buf
[count
]=t
oupper
(buf
[count
])
;
count
++;
}/
*wr
it
etheconv
ert
orst
ri
ngbackt
osecondpi
pe*
/
wr
it
e(wr
fd,
buf
,st
rl
en(
buf
));
cl
ient
:
#i
ncl
ude<st
dio.
h>
#i
ncl
ude<sy
s/t
ypes.
h>
#i
ncl
ude<sy
s/st
at.
h>
#i
ncl
ude<f
cnt
l.
h>
#i
ncl
ude<st
dli
b.h>
#i
ncl
ude<st
ri
ng.
h>
#i
ncl
ude<ct
ype.
h>
mai
n()
i
ntwr
fd,
rdf
d,n;
charbuf
[50]
,
li
ne[
50]
;/*
opent
hef
ir
stnamedpi
pef
orwr
it
ing*
/
wr
fd=open(
"np1"
,O_
WRONLY)
;/*
creat
ethesecondnamedpi
pef
orr
eadi
ng
*
/
r
dfd=open(
"np2"
,O_
RDONLY)
;/*
wri
tet
othepi
pe*
/
pr
int
f("
ent
erl
i
neoft
ext
");
get
s(l
i
ne)
;
wr
it
e(wr
fd,
l
ine,
str
len(
li
ne)
);/
*readf
rom t
hepi
pe*
/
n=r
ead(
rdf
d,buf
,50)
;
buf
[n]
='
\0'
;//
endofl
i
ne
pr
int
f("
ful
ldupl
excl
i
ent
:r
eadf
rom t
hepi
pe:
%s\
n",
buf
);
out
put
:
ser
ver
:
-
sh-
4.1$.
/msgsnd
f
ull
dupl
exser
ver
:r
eadf
rom t
hepi
pe:
hel
l
o
cl
i
ent
:
-
sh-
4.1$.
/msgr
cv
ent
erl
i
neoft
ext
:hel
l
o
f
ull
dupl
excl
i
ent
:r
eadf
rom t
hepi
pe:
HELLO
(
b)MessageQueue
ser
ver
:
#i
ncl
ude<sy
s/t
ypes.
h>
#i
ncl
ude<sy
s/msg.
h>
#i
ncl
ude<sy
s/i
pc.
h>
#i
ncl
ude<st
ri
ng.
h>
#i
ncl
ude<st
dio.
h>
i
ntmai
n()
{
key
_ti
pckey
;
i
ntmq_
id;
st
ruct
l
ongt
ype;
chart
ext
[100]
;
}my
msg;
i
pckey
=ft
ok(
"/t
mp/
foo"
,42)
;
pr
int
f("
Mykeyi
s%d\
n",
i
pckey
);
mq_
id=msgget
(i
pckey
,I
PC_
CREAT|
0666)
;
pr
int
f("
Messagei
dent
if
ieri
s%d\
n",
mq_
id)
;
memset
(my
msg.
text
,0,
100)
;
st
rcpy
(my
msg.
text
,"
Hel
l
owor
ld!
")
;
my
msg.
type=1;
msgsnd(
mq_
id,
&my
msg,
si
zeof
(my
msg)
,0)
;
cl
ient
:
#i
ncl
ude<sy
s/t
ypes.
h>
#i
ncl
ude<sy
s/msg.
h>
#i
ncl
ude<sy
s/i
pc.
h>
#i
ncl
ude<st
ri
ng.
h>
#i
ncl
ude<st
dio.
h>
i
ntmai
n()
key
_ti
pckey
;
i
ntmq_
id;
st
ruct
l
ongt
ype;
chart
ext
[100]
;
}
mymsg;
i
ntr
ecei
ved;
i
pckey
=ft
ok(
"/t
mp/
foo"
,42)
;
pr
int
f("
Mykeyi
s%d\
n",
i
pckey
);
mq_
id=msgget
(i
pckey
,0)
;
pr
int
f("
Messagei
dent
if
ieri
s%d\
n",
mq_
id)
;
r
ecei
ved=msgr
cv(
mq_
id,
&my
msg,
si
zeof
(my
msg)
,0,
0);
pr
int
f("
%s(
%d)
\n"
,my
msg.
text
,r
ecei
ved)
;
out
put
:
-
sh-
4.1$cc-
omsgsermsgser
ver
.c
-
sh-
4.1$cc-
omsgcl
imsgcl
i
ent
.c
-
sh-
4.1$.
/msgser
Mykeyi
s-1
Messagei
dent
if
ieri
s98304
-
sh-
4.1$.
/msgcl
i
Mykeyi
s-1
Messagei
dent
if
ieri
s98304
Hel
l
owor
ld!(
112)
(
c)Shar
edMemor
y
ser
ver
:
#i
ncl
ude<sy
s/t
ypes.
h>
#i
ncl
ude<sy
s/i
pc.
h>
#i
ncl
ude<sy
s/shm.
h>
#i
ncl
ude<st
dio.
h>
#i
ncl
ude<st
dli
b.h>
#def
ineMAXSI
ZE27
v
oiddi
e(char*
s)
per
ror
(s)
;
exi
t(
1);
i
ntmai
n()
charc;
i
ntshmi
d;
key
_tkey
;
char*
shm,
*s;
key
=5678;
i
f(
(shmi
d=shmget
(key
,MAXSI
ZE,
I
PC_
CREAT|
0666)
)<0)
di
e("
shmget
");
i
f(
(shm=shmat
(shmi
d,NULL,
0))
==(
char*
)-1)
di
e("
shmat
");
s=shm;
f
or(
c='
a'
;c<='
z'
;c++)
*
s++=c;
whi
l
e(*
shm!
='
*'
)
sl
eep(
1);
exi
t(
0);
cl
ient
:
#i
ncl
ude<sy
s/t
ypes.
h>
#i
ncl
ude<sy
s/i
pc.
h>
#i
ncl
ude<sy
s/shm.
h>
#i
ncl
ude<st
dio.
h>
#i
ncl
ude<st
dli
b.h>
#def
ineMAXSI
ZE27
v
oiddi
e(char*
s)
per
ror
(s)
;
exi
t(
1);
i
ntmai
n()
i
ntshmi
d;
key
_tkey
;
char*
shm,
*s;
key
=5678;
i
f(
(shmi
d=shmget
(key
,MAXSI
ZE,
0666)
)<0)
di
e("
shmget
");
i
f(
(shm=shmat
(shmi
d,NULL,
0))
==(
char*
)-1)
di
e("
shmat
");
f
or(
s=shm;
*s!
='
\0'
;
s++)
put
char
(*s)
;
put
char
('
\n'
);
*
shm='
*'
;
exi
t(
0);
out
put
:
-
sh-
4.1$cc-
ossshmser
ver
.c
-
sh-
4.1$cc-
oscshmcl
i
ent
.c
-
sh-
4.1$.
/ss
-
sh-
4.1$.
/sc
abcdef
ghi
j
klmnopqr
stuv
wxy
z
9.
Connect
ionor
ient
edCl
ientser
verappl
icat
ionswi
thTCP
ser
ver
:
#i
ncl
ude<st
dio.
h>
#i
ncl
ude<net
db.
h>
#i
ncl
ude<net
inet
/i
n.h>
#i
ncl
ude<st
dli
b.h>
#i
ncl
ude<st
ri
ng.
h>
#i
ncl
ude<sy
s/socket
.h>
#i
ncl
ude<sy
s/t
ypes.
h>
#def
ineMAX80
#def
inePORT8080
#def
ineSAst
ructsockaddr
v
oidf
unc(
intsockf
d)
charbuf
f[
MAX]
;
i
ntn;
f
or(
;;
){
bzer
o(buf
f,MAX)
;
r
ead(
sockf
d,buf
f,si
zeof
(buf
f))
;
pr
int
f("
From cl
i
ent
:%s\
tTocl
i
ent:
",buf
f);
bzer
o(buf
f,MAX)
;
n=0;
whi
l
e((
buf
f[
n++]=get
char
())!
='\
n')
wr
it
e(sockf
d,buf
f,si
zeof
(buf
f))
;
i
f(st
rncmp(
"exi
t"
,buf
f,4)==0){
pr
int
f("
Ser
verExi
t.
..
\n"
);
br
eak;
i
ntmai
n()
i
ntsockf
d,connf
d,l
en;
st
ructsockaddr
_inser
vaddr
,cl
i
;
sockf
d=socket
(AF_
INET,
SOCK_
STREAM,
0);
i
f(sockf
d==-
1){
pr
int
f("
socketcr
eat
ionf
ail
ed.
..
\n"
);
exi
t(
0);
el
se
pr
int
f("
Socketsuccessf
ull
ycr
eat
ed.
.\
n")
;
bzer
o(&ser
vaddr
,si
zeof
(ser
vaddr
));
ser
vaddr
.si
n_f
ami
l
y=AF_
INET;
ser
vaddr
.si
n_addr
.s_
addr=ht
onl
(I
NADDR_
ANY)
;
ser
vaddr
.si
n_por
t=ht
ons(
PORT)
;
i
f((
bind(
sockf
d,(
SA*
)&ser
vaddr
,si
zeof
(ser
vaddr
)))!
=0){
pr
int
f("
socketbi
ndf
ail
ed.
..
\n"
);
exi
t(
0);
el
se
pr
int
f("
Socketsuccessf
ull
ybi
nded.
.\
n")
;
i
f((
li
sten(
sockf
d,5)
)!=0){
pr
int
f("
List
enf
ail
ed.
..
\n"
);
exi
t(
0);
el
se
pr
int
f("
Ser
verl
i
steni
ng.
.\
n")
;
l
en=si
zeof
(cl
i
);
connf
d=accept
(sockf
d,(
SA*
)&cl
i
,&l
en)
;
i
f(connf
d<0){
pr
int
f("
ser
veraccceptf
ail
ed.
..
\n"
);
exi
t(
0);
el
se
pr
int
f("
ser
veraccceptt
hecl
i
ent
..
.\
n")
;
f
unc(
connf
d);
cl
ose(
sockf
d);
cl
ient:
#i
nclude<net
db.
h>
#i
ncl
ude<st
dio.
h>
#i
ncl
ude<st
dli
b.h>
#i
ncl
ude<st
ri
ng.
h>
#i
ncl
ude<sy
s/socket
.h>
#def
ineMAX80
#def
inePORT8080
#def
ineSAst
ructsockaddr
v
oidf
unc(
intsockf
d)
charbuf
f[
MAX]
;
i
ntn;
f
or(
;;
){
bzer
o(buf
f,si
zeof
(buf
f))
;
pr
int
f("
Ent
ert
hest
ri
ng:
");
n=0;
whi
l
e((
buf
f[
n++]=get
char
())!
='\
n')
wr
it
e(sockf
d,buf
f,si
zeof
(buf
f))
;
bzer
o(buf
f,si
zeof
(buf
f))
;
r
ead(
sockf
d,buf
f,si
zeof
(buf
f))
;
pr
int
f("
From Ser
ver:
%s"
,buf
f);
i
f((
str
ncmp(
buf
f,"
exi
t"
,4)
)==0){
pr
int
f("
Cli
entExi
t.
..
\n"
);
br
eak;
i
ntmai
n()
i
ntsockf
d,connf
d;
st
ructsockaddr
_inser
vaddr
,cl
i
;
sockf
d=socket
(AF_
INET,
SOCK_
STREAM,
0);
i
f(sockf
d==-
1){
pr
int
f("
socketcr
eat
ionf
ail
ed.
..
\n"
);
exi
t(
0);
el
se
pr
int
f("
Socketsuccessf
ull
ycr
eat
ed.
.\
n")
;
bzer
o(&ser
vaddr
,si
zeof
(ser
vaddr
));
ser
vaddr
.si
n_f
ami
l
y=AF_
INET;
ser
vaddr
.si
n_addr
.s_
addr=i
net
_addr
("127.
0.0.
1")
;
ser
vaddr
.si
n_por
t=ht
ons(
PORT)
;
i
f(connect
(sockf
d,(
SA*
)&ser
vaddr
,si
zeof
(ser
vaddr
))!
=0){
pr
int
f("
connect
ionwi
tht
heser
verf
ail
ed.
..
\n"
);
exi
t(
0);
}
el
se
pr
int
f("
connect
edt
otheser
ver
..
\n"
);
f
unc(
sockf
d);
cl
ose(
sockf
d);
out
put
:
10.
Connect
ionl
essCl
i
entser
verappl
i
cat
ionswi
thUDP.
Pr
ogr
am:
Serv
er :
#i
nclude<st di o. h>
#i
nclude<st dl ib.h>
#i
nclude<uni st d.h>
#i
nclude<st r i
ng. h>
#i
nclude<sy s/ types. h>
#i
nclude<sy s/ socket .
h>
#i
nclude<ar pa/ inet .h>
#i
nclude<net inet /i
n.h>
#definePORT 8080
#defineMAXLI NE1024
i
ntmai n(){
i
ntsockf d;
charbuf fer [MAXLI NE] ;
char* hello=" Hel lof rom ser ver ";
str
uctsockaddr _inser vaddr ,
cl iaddr;
i
f((sockf d=socket (AF_ INET, SOCK_ DGRAM,0))<0){
perr or( "socketcr eationf ailed")
;
exit(EXI T_ FAI LURE) ;
}
memset (&ser vaddr ,0,sizeof(ser vaddr))
;
memset (&cl iaddr ,0, sizeof (
cliaddr )
);
servaddr .sin_ fami ly =AF_ I
NET; /
/IPv4
servaddr .sin_ addr .s_addr=I NADDR_ ANY;
servaddr .sin_ por t=ht ons( PORT)
i
f(bi nd(sockf d, (constst ructsockaddr* )
&ser
vaddr
,
si zeof (ser v
addr ))<0)
{
perr or( "bindf ail
ed" );
exit(EXI T_ FAI LURE) ;
}
i
ntlen,n;
n=r ecvfr
om( sockf d,(char*)buffer,MAXLINE,
MSG_ WAITALL, (structsockaddr*)&cli
addr
,
&len);
buff
er[n]=' \
0';
pri
ntf(
"Cli
ent: %s\n",buff
er);
sendto(sockfd, (constchar*)hello,str
len(
hell
o),
MSG_ CONFI RM, (conststructsockaddr* )&cl
iaddr
,
len);
pri
ntf(
"Hel l
omessagesent .
\n");
r
etur
n0;
}
Cl
ient
:
#i
ncl
ude<st dio. h>
#i
ncl
ude<st dlib.h>
#i
ncl
ude<uni st d.h>
#i
ncl
ude<st ri
ng. h>
#i
ncl
ude<sy s/ types. h>
#i
ncl
ude<sy s/ socket .
h>
#i
ncl
ude<ar pa/ inet .h>
#i
ncl
ude<net inet /
in.h>
#def
inePORT 8080
#def
ineMAXLI NE1024
i
ntmain(){
intsockf d,len,n;
charbuf f
er [MAXLI NE] ;
char* hello=" Hel lofrom client";
structsockaddr _in servaddr;
if((sockf d=socket (
AF_ INET, SOCK_ DGRAM, 0)
)<0){
perror( "socketcr eationf ai
led");
exi
t(EXI T_FAI LURE) ;
}
memset (
&ser v addr ,0,sizeof(servaddr))
;
servaddr .sin_ fami l
y=AF_ INET;
servaddr .sin_ por t=ht ons( PORT) ;
servaddr .sin_ addr .
s_addr=I NADDR_ ANY;
sendt o(sockf d, (constchar* )hell
o,strl
en(hel
lo),
MSG_ CONFI RM, (constst r
uctsockaddr* )&servaddr,
si zeof (ser vaddr));
printf(
"Hel lomessagesent .\n");
n=r ecv from( sockf d,(char* )
buf f
er,MAXLI NE,
MSG_ WAI TALL, (
structsockaddr*)&servaddr,
&l en) ;
buf f
er[
n]='\0'
;
printf
("Ser
ver:%s\
n",
buf
fer
);
close(sockfd)
;
return0;
}
Out
put
: