#include"dccp.h" #include struct ip pkt; struct sockaddr_in host,src,destn; int sock,len; float pktrate=1; int seqno=5631; float rtt=0,sample_rtt=0; float lossrate; struct timeval t; struct timezone tz; void addressbinder() { host.sin_addr.s_addr=inet_addr("127.0.0.3"); destn.sin_addr.s_addr=inet_addr("127.0.0.6"); host.sin_family=destn.sin_family=AF_INET; len=sizeof(src); if(bind(sock,(struct sockaddr*)&host,sizeof(host))<0) perror("bind"); } void conncloser() { pkt.packet.dccphead.type=5; pkt.packet.dccphead.seqno=++seqno; if(sendto(sock,&pkt,sizeof(pkt),0,(struct sockaddr*)&destn,sizeof(destn))<0) perror("sendto"); printf("\n DCCP-Close Req Packet sent with seqno %d\n",seqno); if(recvfrom(sock,&pkt,sizeof(pkt),0,(struct sockaddr*)&src,&len)<0) perror("recvfrom"); printf("\n DCCP-Close Packet Received \n"); printf("\n Connection Closed \n"); } void rttcalculator() { long difference=0; difference=(-pkt.packet.dccphead.optn.timestamp.tv_sec+t.tv_sec)*1000000+(-pkt.packet.dccphead.optn.timestamp.tv_usec+t.tv_usec); float k=(float)(difference/=1000); if(rtt==0) rtt=difference; else { rtt=(0.85*rtt)+(0.15*difference); } printf("\n The sample RTT is \n",difference); printf("\n The mean RTT is \n",rtt); } void pktratecalculator() { float k=sqrtf(2*pktrate*lossrate); float a=rtt*k; float l=sqrtf(3*pktrate*lossrate*8); float b=3*l*lossrate*(pow(1+(32*lossrate),2)); float c=sizeof(struct ip)/(a*b); pktrate=(int)c; printf("\n The pkt rate is %d \n",pktrate); } void conn_establish() { pkt.packet.dccphead.type=0; pkt.packet.dccphead.seqno=++seqno; pkt.packet.dccphead.optn.ccid=3; if(gettimeofday((&t),&tz)<0) perror("gettimeofday"); pkt.packet.dccphead.optn.timestamp=t; if(sendto(sock,&pkt,sizeof(pkt),0,(struct sockaddr*)&destn,sizeof(destn))<0) perror("sendto"); printf(" \n DCCP-Request Packet sent to DCCP Server addressed 127.0.0.12 \n"); printf(" \n Feature Negotiation Started \n"); printf(" \n The CCID value sent for negotiation with Server is 3 i.e.,TCP Friendly Rate Control Mechanism \n"); if(recvfrom(sock,&pkt,sizeof(pkt),0,(struct sockaddr*)&src,&len)<0) perror("recvfrom"); if(gettimeofday((&t),&tz)<0) perror("gettimeofday"); printf(" \n DCCP-Response Packet Received \n "); printf(" \n Feature Negotiation Over \n"); printf(" \n The CCID Value of 3 has been accepted by both sides for any further communication \n"); rttcalculator(); } void pkt_transmission() { int i; char choice; while(1) { for(i=0;i