#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);
}