Code:
int __cdecl main(void)
{
// Creating MySQL Connection
char query[180];
mysql_init(&mysql);
if(mysql_real_connect(&mysql, "localhost", "root", "security", "demo",3306, NULL, 0))
cout<<"Connected to the database."<<endl;
else {
cout<<"Connection to the database failed."<<endl;
exit(0);
}
//Creating Socket
WSADATA wsaData;
SOCKET ListenSocket = INVALID_SOCKET;
SOCKET ClientSocket = INVALID_SOCKET;
struct addrinfo *result = NULL,
hints;
char recvbuf[DEFAULT_BUFLEN];
int iResult, iSendResult;
int recvbuflen = DEFAULT_BUFLEN;
int clientid=0;
Clientinfo temp_client[10];
// for our thread
DWORD thread;
// Initialize Winsock
iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
if (iResult != 0) {
printf("WSAStartup failed: %d\n", iResult);
return 1;
}
ZeroMemory(&hints, sizeof(hints));
hints.ai_family = AF_INET;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP;
hints.ai_flags = AI_PASSIVE;
// Resolve the server address and port
iResult = getaddrinfo(NULL, DEFAULT_PORT, &hints, &result);
if ( iResult != 0 ) {
printf("getaddrinfo failed: %d\n", iResult);
WSACleanup();
return 1;
}
// Create a SOCKET for connecting to server
ListenSocket = socket(result->ai_family, result->ai_socktype, result->ai_protocol);
if (ListenSocket == INVALID_SOCKET) {
printf("socket failed: %ld\n", WSAGetLastError());
freeaddrinfo(result);
WSACleanup();
return 1;
}
printf("created socket\n");
// Setup the TCP listening socket
iResult = bind( ListenSocket, result->ai_addr, (int)result->ai_addrlen);
if (iResult == SOCKET_ERROR) {
printf("bind failed: %d\n", WSAGetLastError());
freeaddrinfo(result);
closesocket(ListenSocket);
WSACleanup();
return 1;
}
printf("bind complete\n");
freeaddrinfo(result);
iResult = listen(ListenSocket, SOMAXCONN);
if (iResult == SOCKET_ERROR) {
printf("listen failed: %d\n", WSAGetLastError());
closesocket(ListenSocket);
WSACleanup();
return 1;
}
//Thread for checking
CreateThread(NULL, 0, check, NULL, 0, &thread);
//Thread for database
//CreateThread(NULL, 0, populate_database, NULL, 0, &thread);
//MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
//For the last mesg sequence number
sprintf(query,"CREATE TABLE SEQ(srno INT, last_id INT)");
mysql_real_query(&mysql,query,(unsigned int)strlen(query));
res = mysql_use_result(&mysql);
mysql_free_result(res);
// Accept a client socket
printf("waiting fr client\n");
while(true){
cout<<"waiting......"<<endl;
try{
cout<<"!!!!!!!!!!! \t"<<clientid<<"\t !!!!!!!!!!!!!!!!"<<endl;
// print_values();
cout<<"!!!!!!!!!!! \t"<<clientid<<"\t !!!!!!!!!!!!!!!!"<<endl;
ClientSocket = accept(ListenSocket, NULL, NULL);
cout<<"found"<<endl;
if (ClientSocket == INVALID_SOCKET) {
printf("accept failed: %d\n", WSAGetLastError());
closesocket(ListenSocket);
WSACleanup();
return 1;
}
cout<<"accepted client"<<endl;
clientid++;
sprintf(query,"CREATE TABLE STORAGE_%d(srno INT, id INT, mesg VARCHAR(10000))",clientid);
mysql_real_query(&mysql,query,(unsigned int)strlen(query));
res = mysql_use_result(&mysql);
mysql_free_result(res);
//Clientinfo temp_client;
temp_client[clientid].Clientid = clientid;
temp_client[clientid].ClientSocket = ClientSocket;
//temp_client.pointer_cache = &cache;
CreateThread(NULL, 0,receive_cmds,(LPVOID)&(temp_client[clientid]), 0, &thread);
cout<<"Majak majak mein "<<ClientSocket<<endl;
//closesocket(ClientSocket);
//free(temp_client);
}
catch(exception e){
cout<<"Caught in Main\t"<<e.what()<<endl;
}
}
// No longer need server socket
closesocket(ListenSocket);
// cleanup
closesocket(ClientSocket);
WSACleanup();
//print_values();
return 0;
}