Server.c

#include<windows.h>
#include<stdio.h>
#include <mmsystem.h>
#include <process.h>
#include<winsock.h>

#define MAX_BUFFERS  1500;
#define MSG_LEN  400;

transmit();

VOID transmitStoppedTalk();
VOID Client(void);
VOID StartRecording();
VOID StopPlay();
void abc(char *);
VOID CheckBusy();
VOID AnsLoop();

WSADATA ws;
SOCKET s, c;
HDC hdcText;
 

FILE* fpserver;

int ii,yy,r,e,sdw,cdw,BufSizeRecd;
int closesock,ans,y,x,busysignal,chk;
int busythreadnr,closeclient,noans,ansthreadnr,closed;
extern int cournt;
extern int Terminateconn;
struct sockaddr_in server;
struct sockaddr_in client;
struct aax
{
 char aaa;
 char aab;
 char aac;
 char aad;
};

union
{
 struct aax ah;
 long bh;
}v;
 

extern int calling_function;
extern WAVEHDR* lpwho[1500];
extern WAVEHDR* lpwh[1500];
extern HWND hWnd;
extern HMENU hMenu;
extern int sthreadnr,cthreadnr;
extern char HostAddr[100];
extern TxtOut[100];
int busy;
char msgarray[100];
char ipaddr[100];
char bb[1023];
char mm[1500];

void abc(char *p)
{
 fpserver=fopen("server.txt","a+");
 fprintf(fpserver,"%s\n",p);
 fclose(fpserver);
}

//---------------------------
Server()
//----------------------------
{
 strcpy(msgarray,"\n\n");
 abc(msgarray);

 InvalidateRgn(hWnd,NULL,TRUE);
 sprintf(TxtOut,"Welcome to SPEAK EAZY");
 PostMessage(hWnd,WM_PAINT,0,0L);

 r=WSAStartup(0x0101,&ws);
 sprintf(msgarray,"Server: WSASTARTUP = %ld",r);
 abc(msgarray);
 noans=0;
 s=socket(AF_INET,SOCK_DGRAM,0);
 sprintf(msgarray,"Server: SOCKET = %ld",s);
 abc(msgarray);

 server.sin_family=AF_INET;
 server.sin_port=htons(13);
 server.sin_addr.s_addr=INADDR_ANY;

 r=bind(s,(struct sockaddr *)&server, sizeof(server));
 sprintf(msgarray,"Server: BIND=%ld",r);
 abc(msgarray);

 if(r!=0)
 {
  MessageBox(0,"Could not Bind Server","SPEAK EAZY - Terminating....",0);
  PostMessage(hWnd,WM_CLOSE,0,0L);
 }
 else
 {
  InvalidateRgn(hWnd,NULL,TRUE);
  sprintf(TxtOut,"SERVER  RUNNING .....");
  SendMessage(hdcText,WM_PAINT,0,0L);
 }

 sdw=sizeof(server);
 r=recvfrom(s,bb,100,0,(struct sockaddr*)&server,&sdw);
 sprintf(msgarray,"Server: ReceiveFrom = %ld    bb= %s",server.sin_addr.s_addr,bb);
 abc(msgarray);

 v.bh=server.sin_addr.s_addr;
 sprintf(ipaddr,"%d.%d.%d.%d",v.ah.aaa,v.ah.aab,v.ah.aac,v.ah.aad);

 if(r>0)
 {
  if(strcmp(bb,"Request Connection")==0)
  {
   PlaySound("Ring1.wav",NULL,SND_FILENAME|SND_ASYNC|SND_LOOP);
   _beginthread(AnsLoop,0,ansthreadnr);
   sprintf(msgarray,"SPEAK EAZY - %d.%d.%d.%d is Requesting Connection",v.ah.aaa,v.ah.aab,v.ah.aac,v.ah.aad);
   ans=MessageBox(0,"Accept Connection???",msgarray,1);
   noans=1;
   PlaySound(NULL,NULL,SND_ASYNC|SND_LOOP);
   if(ans==IDOK)
   {
    strcpy(bb,"Accepted Connection");
    r=sendto(s,bb,100,0,(struct sockaddr *)&server,sizeof(server));
    sprintf(msgarray,"Server: Message Sent to = %ld    bb= %s",r,bb);
    abc(msgarray);
    calling_function=1;
    _beginthread(Client,0,cthreadnr);
   }
   else
   {
    EnableMenuItem(hMenu,103,MF_ENABLED);
    EnableMenuItem(hMenu,100,MF_GRAYED);
    strcpy(bb,"Declined Connection");
    r=sendto(s,bb,100,0,(struct sockaddr *)&server,sizeof(server));
    sprintf(msgarray,"Server: Message Sent to = %ld    bb= %s",r,bb);
    abc(msgarray);
    closesock=closesocket(s);
    sprintf(msgarray,"Server Socket Close = %d\n",closesock);
    abc(msgarray);
    closesocket(s);
    _beginthread(Server,0,sthreadnr);
    _endthread();
    return 0;
   }
  }
  else if(strcmp(bb,"Initiating second connection")==0)
  {
   strcpy(bb,"Second Connection Accepted");
   r=sendto(s,bb,100,0,(struct sockaddr *)&server,sizeof(server));
   sprintf(msgarray,"Server: Message Sent to = %ld    bb= %s",r,bb);
   abc(msgarray);
   InvalidateRgn(hWnd,NULL,TRUE);
   sprintf(TxtOut,"Playback Started.......");
   PostMessage(hWnd,WM_PAINT,0,0L);

  }
 }
}

//------------------------------------
VOID Client()
//-----------------------------------
{
 closeclient=0;
 busysignal=0;
 cournt=0;
 closed=0;
 strcpy(msgarray,"\n\n");
 abc(msgarray);

 e=WSAStartup(0x0101,&ws);
 sprintf(msgarray,"Client: WSAStartup = %ld",e);
 abc(msgarray);

 c=socket(PF_INET,SOCK_DGRAM,0);
 sprintf(msgarray,"Client : CLIENT SOCKET = %ld",c);
 abc(msgarray);

 client.sin_family=AF_INET;
 client.sin_port=htons(13);
 if(calling_function==0)
 {
  strcpy(bb,"Request Connection");
  client.sin_addr.s_addr=inet_addr(HostAddr);
  e=sendto(c,bb,100,0,(struct sockaddr *)&client,sizeof(client));
  cournt=0;
  InvalidateRgn(hWnd,NULL,TRUE);
  sprintf(TxtOut,"Wait for Host to reply");
  PostMessage(hWnd,WM_PAINT,0,0L);
 
 }
 else
 {
  strcpy(bb,"Initiating second connection");
  client.sin_addr.s_addr=inet_addr(ipaddr);
  e=sendto(c,bb,100,0,(struct sockaddr *)&client,sizeof(client));

 }
 abc(bb);
 sprintf(msgarray,"Client: Send to = %d",e);
 abc(msgarray);
 cdw=sizeof(client);
 if(cournt==0)
 {
  _beginthread(CheckBusy,0,busythreadnr);
  if(closed==1)
   _endthread();
  recvfrom(c,bb,100,0,(struct sockaddr *)&client,&cdw);
  busysignal=1;
  if(closeclient==1)
   _endthread();
  sprintf(msgarray,"Client: ReceiveFrom Host = %ld    bb= %s",r,bb);
  abc(msgarray);
  cournt=1;
 }
 if(strcmp(bb,"Declined Connection")==0)
 {
  EnableMenuItem(hMenu,103,MF_ENABLED);
  EnableMenuItem(hMenu,100,MF_GRAYED);
  MessageBox(0,"Sorry \n Declined Connection","SPEAK EAZY",0);
  closesocket(c);
  cournt=0;
  InvalidateRgn(hWnd,NULL,TRUE);
  sprintf(TxtOut,"SERVER  RUNNING .....");
  SendMessage(hdcText,WM_PAINT,0,0L);
  _endthread();
  return(0);
 }
 else if(strcmp(bb,"Accepted Connection")==0)
 {
  Open_Dev_For_Play(hWnd);
 }
 else if(strcmp(bb,"Second Connection Accepted")==0)
 {
  StartRecording();
 }
 ii=0;
 yy=0;
 while (yy<=1499)
 {
  sprintf(mm,"c=%ld\n",c);
  BufSizeRecd=recvfrom(c,lpwho[ii]->lpData,1024,0,(struct sockaddr *)&client,&cdw);
  if(*(lpwho[ii]->lpData)==65 && *(lpwho[ii]->lpData+1)==122)
  {
   StopPlay();
   StartRecording();
  }
  else
  {
   EnableMenuItem(hMenu,103,MF_GRAYED);
   EnableMenuItem(hMenu,100,MF_ENABLED);

   if(Terminateconn==0)
   {
    StartPlay(ii);
   }
   else if(Terminateconn==1)
   {
    MessageBox(0,"You have disconnected","SPEAK EAZY",0);
    _endthread();
    break;
   }
   sprintf(mm,"%d = %d \n",ii,BufSizeRecd);

   ii++;
   yy++;
   if(yy>1499)
   {
    yy=1;
    ii=1;
   }
  }
 }
 sprintf(msgarray,"Client: Message from Host = %s ",mm);
 abc(msgarray);
}

//==============================
transmit(int buffnum)
//==============================
{
 EnableMenuItem(hMenu,103,MF_GRAYED);
 EnableMenuItem(hMenu,100,MF_ENABLED);
 r=sendto(s,lpwh[buffnum]->lpData,1024,0,(struct sockaddr *)&server,sizeof(server));
}

//===========================
VOID transmitStoppedTalk()
//===========================
{
 char sendStop[10];
 strcpy(sendStop,"AzAzp");
 sendto(s,sendStop,10,0,(struct sockaddr *)&server,sizeof(server));
 sprintf(msgarray,"Server: Message Sent to = %ld    bb= %s",r,sendStop);
 abc(msgarray);
}

//============================
VOID CheckBusy()
//============================
{
 for(chk=0;chk<500000000;chk++)
 {
  if(busysignal==1)
   _endthread();
 }
 MessageBox(0,"The Host is Busy. \n Try Again","SPEAK EAZY - Host Busy",0);
 EnableMenuItem(hMenu,103,MF_ENABLED);
 EnableMenuItem(hMenu,100,MF_GRAYED);
 closeclient=1;
 closesocket(c);
 closesocket(s);
 closed=1;
 InvalidateRgn(hWnd,NULL,TRUE);
 sprintf(TxtOut,"SERVER  RUNNING .....");

 SendMessage(hdcText,WM_PAINT,0,0L);
 WinExec("Trial.exe",2);
 SendMessage(hWnd,WM_CLOSE,0,0L);
}

//============================
VOID AnsLoop()
//============================
{
 for(chk=0;chk<400000000;chk++)
 {
  if(noans==1)
   _endthread();
 }
 closesocket(c);
 closesocket(s);
 WinExec("Trial.exe",2);
 SendMessage(hWnd,WM_CLOSE,0,0L);

}



Back to View/Download Index                                                                                                Back to Vijay Mukhi.com